二分查詢演算法的java程式碼實現
阿新 • • 發佈:2018-12-18
一、演算法思想
首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功,時間複雜度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; }