1. 程式人生 > >輕鬆理解-中高階java開發必知必會 之 二分查詢

輕鬆理解-中高階java開發必知必會 之 二分查詢

二分查詢也叫折半查詢,二分查詢就是將查詢的鍵和子陣列的中間鍵作比較,如果被查詢的鍵小於中間鍵,就在左子陣列繼續查詢;如果大於中間鍵,就在右子陣列中查詢,否則中間鍵就是要找的元素 但是這個查詢必須要求陣列中的數字是有順序性的其實還有很多關於這個二分查詢的變種演算法,可以自行拓展下。

而且此演算法在求職中有很大機率會被提問,所以需要掌握下

上程式碼:

/**
 * 二分查詢,找到該值在陣列中的下標,否則為-1
 */
static int binarySerach(int[] array, int key) {
    int left = 0;
    int right = array.length - 1;

    // 這裡必須是 <= 如果出現數組情況是 arr ={1,2,6} 而6是需要查詢的數,如果不是<=則會出現找不到的情況
    while (left <= right) {
        int mid = (left + right) / 2;
        if (array[mid] == key) {
            return mid;
        }
        else if (array[mid] < key) {
            left = mid + 1;
        }
        else {
            right = mid - 1;
        }
    }

    return -1;
}