題目:折半查找(二分查找),她僅適合有序的順序表。
基本思想:首先將給定值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;
}