binary search

从中间查找。比如0-100间有一个目标数字然后从50开始对半找最快

数组一定要有序,时间复杂度是O(logN)

 

例题:LC35 给一个数组和一个目标值,如果数组中有这个值,就返回数组中这个目标值的下标。

 

public int search(int key, int[] array) {
int l = 0, h = array.length - 1;
while (l <= h) {
int mid = l + (h - l) / 2;
if (key == array[mid]) return mid;
if (key < array[mid]) h = mid - 1;
else l = mid + 1;
}
return -1;
}