public class BinarySearch {
static int search(int[] nums, int target) {
int length = nums.length;
if (length == 1 && nums[0] == target) {
return 0;
}
int mid;
int left = 0;
// 需要减一
int right = length - 1;
while (left <= right) {
// 每次寻找更换中间点位置
mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] < target) {
// left 加一, 左半边的值小于 mid 对应的值
left = mid + 1;
} else {
// 同理 right 需要减一
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
System.out.println(BinarySearch.search(new int[]{-1, 0, 3, 5, 9, 12}, 3));
}
}