查找指定的数
这个是最简单的,也是我们最熟悉的,即搜索一个数。如果存在,返回下标,否则返回-1。
int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) { //注意
int mid = left + ((right - left) >> 1);
if (nums[mid] == target)
return mid;
else if (nums[mid] < target)
left = mid + 1; //注意
else if (nums[mid] > target)
right = mid - 1; //注意
}
return -1;
}
查找左边界
int left_bound(int[] nums, int target) {
int left = 0, right = nums.length; //注意
while (left < right) { //注意
int mid = left + ((right - left) >> 1);
if (nums[mid] == target)
right = mid; //注意
else if (nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid; //注意
}
return left;
}
查找右边界
int left_bound(int[] nums, int target) {
int left = 0, right = nums.length; //注意
while (left < right) { //注意
int mid = left + ((right - left) >> 1);
if (nums[mid] == target)
left = mid + 1; //注意
else if (nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid;
}
return left - 1; //注意
}