总结二分查找相关的知识及解题应用
最简单基础的二分搜索可以如下实现:
public static int binarySearch(int[] a,int key) {
int i = 0, j = a.length - 1;
while (i <= j) {
int m = (i + j) >>> 1;
if (key < a[m])
j= m - 1;
else if (key > a[m])
i= m + 1;
else
return m; // key found
}
return -1; // key not found.
}
我们不妨看一下Java函数中的二分查找:(int数组举例)
分析:
private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
int low = fromIndex; //区间开始
int high = toIndex - 1; //区间结束
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];