用java實現的簡單的二分查詢演算法
阿新 • • 發佈:2019-01-29
一、什麼是二分查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
二、例項
查詢一給定的值是否在指定的陣列中,如果存在輸出在陣列中的下標,如果不存在則輸出-1
Java 二分查詢public static int getIndex(int target, int[] array) { if (array == null || array.length == 0) return -1; if (target < array[0] || target > array[array.length - 1]) return -1; int left = 0; int right = array.length - 1; int mid = (left + right) / 2; while (left <= right) { if (target < array[mid]) right = mid - 1; if (target > array[mid]) left = mid + 1; if (target == array[mid]) return mid; mid = (left + right) / 2; } return -1; } public static void main(String[] args) { int num[] = { 2, 3, 4, 6, 10, 20, 31, 35, 42, 53, 60, 90 }; System.out.println(getIndex(7, num)); }