二分查詢理論性總結

2021-09-14 04:44:32 字數 690 閱讀 7124

二分查詢:

1.最後乙個為right,第乙個為left(r:m-1,l:m+1);

2.left變化區間向右縮小,right變化區間向左縮小;

3.邊界判斷條件尤其是等號新增時可在腦中模擬 ;

4.6種變形包括基本寫法熟爛於心

ps:最後返回的都是r;

第乙個if判斷條件(不管是arr[mid] <= key還是arr[mid] < key) ,都是l的操作,也就是去右邊尋找;

如果是尋找最後乙個 等於key的, if(arr[mid] <= key) l = mid + 1; 不過最後要判斷r的合法性以及是否存在key;

如果是尋找最後乙個 小於等於 key的,也是if(arr[mid] <= key) l = mid + 1;不過最後直接返回r;

如果是尋找最後乙個 小於 key的,則判斷條件是 if(arr[mid] < key) l = mid + 1 ,最後返回r

最後返回的都是l;

如果是尋找第乙個等於key的,是if( arr[mid] >= key) r = mid - 1,且最後要判斷l的合法以及是否存在key;

如果是尋找第乙個大於等於key的,也是if(arr[mid] >= key) r = mid - 1,但是最後直接返回l;

如果是尋找第乙個大於key的,則判斷條件是if(arr[mid] > key) r = mid - 1,最後返回l

理論基礎 查詢 二分查詢

二分查詢又稱折半查詢,其要求線性表中的記錄必須按關鍵碼有序,且必須採用順序儲存。其基本思想是 用給定值 k 先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功 若不相等,再根據 k 與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束發現表中沒...

二分查詢總結

今天上csdn,發現一篇關於二分查詢演算法的文章被置頂,回帖也相當熱烈。我覺得演算法總重要的還是要了解思想,至於程式設計技巧則是其次。二分查詢在計算中演算法中的重要性不言而喻,許多變形的演算法都是基於此演變的,比如二分查詢樹等。所以此演算法程式我也打算總結一下。當然經典的演算法討論莫過於jon be...

二分查詢總結

我們假設乙個最簡單的環境,對於數x,按要求詢問它在乙個陣列a 假設從小到大 裡的位置,陣列個數為n。1.查詢最後乙個小於x的數的位置 常見的一種要求。返回小於x的其中的最右邊乙個數的下標。int half int x return r 2.查詢最後乙個小於或等於x的數的位置 返回小於或等於x的其中的...