二分查找的基本思想是:首先确定待查记录所在的范围(区域).假设用变量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拆分进入下一个循环时减半