算法基礎:二分查找(BinarySearch)

二分查找
前提:爲有序數組
時間複雜度:log2n
空間複雜度:O(1)
思想:在有序數組中,採用分治策略,在最壞情況下在O(log2n)時間複雜度的情況下完成搜索。即:(默認升序)將n個元素分成兩份,如果target=array[n/2]位置的元素,則完成搜索;如果target>array[n/2]則繼續在右半部分查找,反之則在左側部分查找,循環直至找到目標。找不到則退出。


import java.util.Scanner;

/**
 * @author :Dennis
 * @date :Created in 4/1/2020 16:03
 * @description:Binary Search
 * @modified By:
 * @version: 1.0
 */
public class BinarySearch {
    public static int Search(int[] array, int target) {
        int low, high, mid;
        low = 0;
        high = array.length - 1;
        while (low <= high) {
            mid = low + (high - low) / 2;
            if (array[mid] == target) {
                return mid;
            } else if (array[mid] < target) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] array = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8};
        int x = Search(array, 4);
        System.out.println("index:" + x);
        Scanner scanner = new Scanner(System.in);
        scanner.nextLine();
        scanner.close();
    }
}

除非放棄技術相關工作,否則每天最少Coding 50行^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章