二分查找(折半查找)學習

百度百科的解釋

    二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須採用順序存儲結構,而且表中元素按關鍵字有序排列。

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

 

以上的定義咱們提取一下關鍵詞

  二分查找的前提條件必須是順序存儲。也就是說二分查找的前提條件數據必須是有序的!

 

現在學習一下二分查找的處理邏輯

代碼實現

    public static int binarySearch(int[] srcArray, int des) {
        int start = 0;
        int end = srcArray.length - 1;
        while (start <= end) { // 循環條件
            int middle = (start + end) >>> 1; // 頭加尾除以2 得到中間值
            if (des == srcArray[middle]) {
                return middle;
            } else if (des < srcArray[middle]) { // 取得中間值比目標值大,說明目標值在中間值的左邊
                end = middle - 1;
            } else { // 取得中間值比目標值大,說明目標值在中間值的右邊
                start = middle + 1;
            }
        }
        return -1; // 沒有找到返回-1
    }

 

 

 

 

 

 

文章是自己學習的總結,如有問題望各位指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章