真題2001 折半查找(二分查找)

題目:折半查找(二分查找),她僅適合有序的順序表。
基本思想:首先將給定值key與表中中間位置元素的關鍵字比較,若想等,則查找成功,返回該元素的存儲位置;若不等則查找元素只能在中間元素以外的前半部分或者後半部分。然後在縮小的範圍內繼續進行同樣的查找,如此重複直到找到爲止,或者確定表中沒有所需要查找的元素,則查找不成功,返回查找失敗的信息。
幾乎所有書本初始順序表默認都是升序。。。。

Int Binary_Search(Seqlist L,Elemtype key){
	//在順序表L中查找關鍵字爲key的元素,若存在則返回其位置,否則返回-1
	Int low=0 ; high=L.length-1 ; ,mid;
	While(low<high){
		Mid=(low+high)/2;         //去中間位置
		If(l.elem[mid]==mid)
			Return mid;              //查找成功則返回其位置
		Else if(l.elem[mid]>key)       //查找的關鍵字key在表的前半部分
			High =mid-1;
		Else (l.elem[mid]<key)       //查找的關鍵字key在表的後半部分
			Low=mid+1;
		)
			Return -1;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章