给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
int search(int* nums, int numsSize, int target) {
int right = numsSize - 1, left = 0, mid = 0;
while (left <= right) { // 数组区间为闭区间时,left=right有意义
mid = left + (right - left) / 2;//避免溢出
if (nums[mid] == target)
return mid; // 数组中找到目标值,直接返回下标
else if (nums[mid] < target)
left = mid + 1; // target 在右区间,所以[mid+1, right]
else
right = mid - 1; // target 在左区间,所以[left, middle - 1]
}
return -1; // 找不到目标值
}