天天看點

如何在給定數組中執行二分法搜尋?

使用二分查找的前提是數組有序

基本思路是:首先将給定Key值與表中中間位置元素的關鍵字比較,若相等,則查找成功,傳回該元素的存儲位置;若不等,則所需查找的元素隻能在中間元素以外的前半部分或後半部分。然後在縮小的範圍内繼續進行同樣的查找,如此重複,直到找到為止,或者确定表中沒有所需要查找的元素,則查找不成功,傳回查找失敗的資訊。

int Binary_Search(SeqList L,int n,ElemType k){
	int low=0,high=n-1,mid;
	while(low<=high)
	{
		mid=(low+high)/2;
		if(L[mid].key==k)
			return mid+1;
		if(L[mid].key>k)
			high=mid-1;
		else
			low=mid+1;
	}
	return 0;
}