二分查詢演算法詳解(折半查詢)
阿新 • • 發佈:2019-01-22
一、基本思想
二分查詢是一種用於有序數列的折半查詢演算法。二分查詢優點是比較次數少,查詢速度快,平均效能好;時間複雜度為O(lgN)。因此二分查詢也成為了面試中的常問問題。
二、演算法分析
二分查詢就是將查詢的鍵和子陣列的中間鍵作比較,如果被查詢的鍵小於中間鍵,就在左子陣列繼續查詢;如果大於中間鍵,就在右子陣列中查詢,否則中間鍵就是要找的元素。
三、編碼實現
package search; public class BinarySearch { public static void main(String[] args) { int[] array = {1,2,3,4,6,6,7,8,9,10}; int key = 6; System.out.println("元素下標值為:"+binarySearch(array, key)); } public static int binarySearch(int[] arr,int key){ int left = 0; int right = arr.length - 1; while (left <= right) { //取出遍歷範圍的中間值索引 int mid = (left + right) / 2; //如果中間值大於我們需要查詢的數值,我們就將查詢區間的右邊界縮到中間值索引的左邊 if (arr[mid] > key) { right = mid - 1; //如果中間值恰好是我們需要查詢的陣列,直接返回 }else if(arr[mid]==key){ return mid; } //如果中間值小於我們需要查詢的數值,我們就將查詢區間的左邊界縮到中間值索引的右邊 else { left = mid + 1; } } if (right >=0 && arr[right]==key) { return right; } //如果沒有查詢到值,返回-1 return -1; } }
四、結果檢視
元素下標值為:4