要点:
目标数组有序,
每次查找和左右下标 l,r 的中间位置m 对比是否匹配。
查找时间复杂度:O(logn)。
采用分治策略。
代码:
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1, 2, 4, 6, 8, 9, 10, 11, 23, 45, 67, 77, 79, 80};
int m = search(arr, 11);
System.out.println(m);
m = search(arr, 12);
System.out.println(m);
}
static int search(int[] arr, int v) {
if (arr.length == 0) {
return -1;
}
int l = 0;
int r = arr.length - 1;
while (l <= r) {
int m = l + (r - l) / 2;
if (arr[m] == v) {
return m;
} else if (arr[m] > v) {
r = m - 1;
} else if (arr[m] < v) {
l = m + 1;
}
}
return -1;
}
}