二分查找
输入: 查找数组和查找值
输出: 数组下标值,若找到为查找值对应下标值,若没找到为比查找值小的数组值的下标值
例如:
输入:
int[] arr = {1,3,5,7,8,9,13};
int target = 4;
输出:1
代码中要注意的是 low<=high和return low-1
static int BinarySearch(int arr[], int k) {
int low = 0, high = arr.length-1, mid;
while(low <= high) {
mid = (low + high) / 2;
if (k == arr[mid])
return mid;
else if (k < arr[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
return low-1;
}