大家帮我看下这段程序有错没,关于二分查找 ( 积分: 50 )

  • 主题发起人 主题发起人 xiaoshun
  • 开始时间 开始时间
X

xiaoshun

Unregistered / Unconfirmed
GUEST, unregistred user!
function binsch(A,low,high,K);integer;
{A和K为f变参,low和high为直参,low和high用以分别表示当前查找区间的下界和上界,初值应该分别为1和n}
var
low:integer;
high:integer;
mid:integer;
begin
low:=1;
high:=n;
//查找区间的下界和上界的初值
while low<=highdo
begin
mid:=(low+high) div 2;
if A[mid].key=k;
then
begin
return(mid);
//查找成功返回
end;
if A[mid].key>k;
then
binsch;=binsch(A,low,mid-1,k);
//在左子表上继续查找
if A[mid].key<k;
binsch;=(A,min+1,high,k);
//在右子表上继续查找
end;
else
binsch:=0 //查找失败
end;
 
function binsch(A,low,high,K);integer;
{A和K为f变参,low和high为直参,low和high用以分别表示当前查找区间的下界和上界,初值应该分别为1和n}
var
low:integer;
high:integer;
mid:integer;
begin
low:=1;
high:=n;
//查找区间的下界和上界的初值
while low<=highdo
begin
mid:=(low+high) div 2;
if A[mid].key=k;
then
begin
return(mid);
//查找成功返回
end;
if A[mid].key>k;
then
binsch;=binsch(A,low,mid-1,k);
//在左子表上继续查找
if A[mid].key<k;
binsch;=(A,min+1,high,k);
//在右子表上继续查找
end;
else
binsch:=0 //查找失败
end;
 
后退
顶部