基本介紹二分查詢只適用於從有序的數列中進行查詢(比如數字和字母),將數列排序後再進行查詢。二分查詢法的執行時間為對數時間O(log2n),即查詢到需要的目標位置最多隻需log2n步,假設從[0,99]的佇列中尋找目標數30,則需要查詢步數為log2(100),即最多需要7次(2^6<100<2^7)。程式碼案例
package com.xie.algorithm;public class BinarySearchNoRecur { public static void main(String[] args) { int[] arr = {1, 3, 8, 10, 11, 67, 100}; int index = binarySearch(arr, 1); System.out.println("index = " + index); } /** * 二分查詢非遞迴實現 * * @param arr 待查詢的陣列,arr是升序排列 * @param target 需要查詢的數 * @return 返回對應的下標 ,-1 表示沒有找到 */ public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] > target) { //需要向左邊查詢 right = mid - 1; } else { //需要向右邊查詢; left = mid + 1; } } return -1; }}
最新評論