內容會持續更新,有錯誤的地方歡迎指正,謝謝!
例題:
在序列 [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...