二分查找法中 high=mid-1或low=mid+1其中的加一或者减一是为什么出现的?

kenroby 1年前 已收到1个回答 举报

偶然相聚 春芽

共回答了14个问题采纳率:78.6% 举报

二分查找的基本思想是:首先确定待查记录所在的范围(区域).假设用变量low和high分别表示当前查找区域的首尾下标.将待查关键字k和该区域的中间元素,其下标为mid=(low+high)/2的关键字进行比较.比较的结果有如下三种情况:
(1)k==A[mid].key:查找成功,返回mid的值.
(2)kA[mid].key:说明元素只可能在右边区域(下标从mid+1到high).因此应在此区域继续取中间位置记录的关键字进行比较.
int BinSearch(SeqList A[],int n,KeyType k)
{ int low=0,high=n-1,mid;
while(lowk) high=mid-1;
else low=mid+1;
}
return -1;
}
从 high=mid-1或low=mid+1拆分进入下一个循环时减半

1年前

4
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.171 s. - webmaster@yulucn.com