二分查找
1.二分查找的基本思想:首先将结点按关键字排序,其次将查找值与中间位置的值比较,相等,查找成功;不等,则中间数据大于或小于查找值,无论怎样查找将在一半的数据中查找。 2.例:输入序列数据查找指定值. 程序: program sxcz; const n=7; type arr=array[1..n]of integer; varx1,i:integer; a:arr; place:integer; procedurepaixv(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 jdo ifr>r[i+1] then begint:=r;a:=r[i+1];r[i+1]:=t;k:=i;end; end; end; proceduresearch(r:arr;m,x:integer; var p:integer); varlow,high,mid:integer; begin p:=0;low:=1;high:=m; whilelow<=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 beginp:=mid;exit;end; end; end; begin write('Enterarray:'); for i:=1 to ndo read(a); writeln; write('Entersearch data:'); read(x1); paixv(a,n); search(a,n,x1,place); ifplace<>0 then writeln('yes') else writeln('no'); end.
|