1. 程式人生 > >二分查詢演算法的java程式碼實現

二分查詢演算法的java程式碼實現

一、演算法思想

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

二、演算法的java程式碼如下:

/**
    * @Description: 二分查詢
    * @param: array:查詢的陣列物件  findNum:要找的關鍵字
    * @return: 存在則返回關鍵字所在的角標,否則返回-1表示不存在
    */
    public static Integer binarySearch(int []array, Integer findNum) {
        Integer low = 0;
        Integer high = array.length - 1;
        while (low <= high) {
            Integer mid = (low + high) / 2;
            if (array[mid] == findNum) {
                return mid;
            } else if (array[mid] > findNum) {
                high = mid - 1;
            } else if (array[mid] < findNum) {
                low = mid + 1;
            }
        }
        return -1;
    }