Image Modal

合肥
合肥奥数网

合肥站
奥数网

信息学竞赛常用算法与策略:查找(2)

合肥奥数网整理 2013-01-17 15:39:45

  5.2 二分查找

  1.二分查找的基本思想:首先将结点按关键字排序,其次将查找值与中间位置的值比较,相等,查找成功;不等,则中间数据大于或小于查找值,无论怎样查找将在一半的数据中查找。

  2.例:输入序列数据查找指定值.

  程序:

  program sxcz;

  const n=7;

  type

  arr=array[1..n] of integer;

  var x1,i:integer;

  a:arr;

  place:integer;

  procedure paixv(var r:arr;m:integer);

  var k,j,i,t:integer;

  begin

  k:=m;

  while k>0 do

  begin

  j:=k-1;k:=0;

  for i:=1 to j do

  if r[i]>r[i+1] then

  begin t:=r[i];a[i]:=r[i+1];r[i+1]:=t;k:=i;end;

  end;

  end;

  procedure search(r:arr;m,x:integer; var p:integer);

  var low,high,mid:integer;

  begin

  p:=0;low:=1;high:=m;

  while low<=high do

  begin

  mid:=(low+high) div 2;

  if x>r[mid] then low:=mid+1 else

  if x<r[mid] then high:=mid-1 else

  begin p:=mid;exit;end;

  end;

  end;

  begin

  write('Enter array:');

  for i:=1 to n do read(a[i]);

  writeln;

  write('Enter search data:');

  read(x1);

  paixv(a,n);

  search(a,n,x1,place);

  if place<>0 then writeln('yes') else writeln('no');

  end.

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航