二分查詢有個坑

2021-08-18 05:48:24 字數 653 閱讀 5520

內容會持續更新,有錯誤的地方歡迎指正,謝謝!

例題:

在序列 [22, 34, 55, 77, 89, 93, 99, 102, 120, 140] 中,採用二分查詢,分別查詢77,34,99,所需的查詢次數分別為()

答案:

4,2,4

理由:

假設低下標用low表示,高下標用high表示

查詢77:

開始low = 0, high = 9

第一次查詢,找到中心的下標為(0+9)/2 = 4,即89,由於89大於77,所以,調整low = 0,high = 3(注意:由於知道下標為4的元素比77大,所以不會讓high等於4

第二次查詢,找到中心的下標為(0+3)/2 = 1,即34,由於34小於77,所以,調整low = 2,high = 3

第三次查詢,找到中心的下標為(2+3)/2 = 2,即55,由於55小於77,所以,調整low = 3,high = 3

第四次查詢,找到中心的下標為(3+3)/2 = 3,即77,找到所要找的元素

所以,查詢77需要四次。

另外,查詢34和99的過程相同

二分查詢爬過的坑

二分查詢看似簡單,但是刷多了二分查詢的題,就會遇到很多意向不到的坑,真的是實踐出真知啊,現總結下二分查詢遇到的坑。一 樸素版二分查詢 在有序陣列中查詢關鍵字,找到就返回下標,不管重複不重複。樸素版二分查詢 int bitsearch int a,int n,int k else if a mid k...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

2020 09 02二分查詢那些坑

如下兩種實現方式,right 邊界的取值,直接影響著演算法的實現細節,這些細節稍不小心就會犯錯。二分查詢看似簡單,實則不然,真正能考慮到所有細節,把 寫準確是很不容易的。int binarysearch int nums,int target return 1 int binarysearch in...