首頁>技術>

基本介紹二分查詢只適用於從有序的數列中進行查詢(比如數字和字母),將數列排序後再進行查詢。二分查詢法的執行時間為對數時間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;    }}

5
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 28、JAVA程式設計內功-資料結構與演算法「二分查詢非遞迴」