给定一个有n个元素的有序(升序)整型数组和一个目标值,找到目标值在数组中的位置,如果目标值存在返回下标,否则返回 -1;注:数组元素升序且不重复
public static void main(String[] args) {
System.out.println(search(new int[]{1,3,5,7,12,21}, 7));
}
private static int search(int[] nums, int target) {
// 头指针
int left = 0;
// 尾指针
int right = nums.length - 1;
while(left <= right) {
// 取中间位置
int middle = left + ((right - left) >> 1);
// 中间位置数据小于目标数据,将头指针指向当前位置后一位
if(nums[middle] < target) {
left = middle + 1;
} else if(nums[middle] > target) {
// 中间位置数据大于目标数据,将尾指针指向当前位置前一位
right = middle - 1;
} else {
return middle;
}
}
return -1;
}