二分查找

[复制链接]
发表于 2023-12-23 11:57:40 | 显示全部楼层 |阅读模式
二分查找
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.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表