public class BinarySearch {
public int binarySearch(int[] arr, int key) {
if (arr == null) {
return -1;
}
int low = 0;
int high = arr.length - 1;
while (low<= high) {
int mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
}
关于二分查找的细节问题
public static int searchInsert(int[] nums, int target){
int low = 0;
int high = nums.length - 1;
int mid;
while(low <= high)
{
mid = low + (high - low)/2;
if(nums[mid] == target)
{
return mid;
}
else if(nums[mid] > target)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
return -1;