程式設計之美 二分查詢演算法

2021-06-23 06:33:54 字數 802 閱讀 6183

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

int search4(int array, int n, int v)

return right;

}

可以用下面的演算法,可以找出滿足條件的數。

[cpp]view plain

copy

intbi_search(

inta,

intn,

intb)

//  

else

if(a[mid]>b)  

high = mid -1;  

else

low = mid +1;  

}  return

last;  

}  int

bi_search1(

inta,

intn,

intb)

//大於b的第乙個數

else

if(a[mid]<=b)  

}  return

last;  

}  

程式設計之美 二分查詢

前三個問題不講,已經解決過了 可以參見 現在寫最後兩個 1.最大的i使得arr i 小於v,其實就是求等於v的下界的前乙個元素。2.最小的i使得arr i 大於v,其實就是求等於v的上界的後乙個元素。include include using namespace std int indexofmax...

《程式設計之美》 二分查詢的實現

找出乙個有序的字串陣列arr中值等於字串v的元素的序號,並返回其序號,否則返回 1 private static intbinarysearch string arr,string str return 1 public static void main string args system.out...

查詢演算法 二分查詢

利用二分查詢演算法查詢某乙個元素,前提條件是該被查詢的元素是乙個已經有序的陣列。二分查詢的思想是將陣列元素的最高位 high 和最低位 low 進行標記,取陣列元素的中間 mid 和和要查詢的值 key 進行比較,如果目標值比中間值要大,則將最低位設定為mid 1,繼續進行查詢。如果目標值小於中間值...