真题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;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章