二分查找
前提:爲有序數組
時間複雜度: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行^_^