题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例一:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
int search(int* nums, int numsSize, int target)
{ //[-1, 0, 3, 5, 9, 12] 6 9
int left = 0;
int right = numsSize - 1;//[left, right]左闭右闭
int middle = 0;
while(left <= right)//循环判断左是否小于等于右
{
middle = left + ((right - left) / 2);//计算数组中间下标
if(nums[middle] < target)
{
left = middle + 1;//中间下标对应的值如果小于目标值 则左下标前移到中间下标位置
}
else if(nums[middle] > target)
{
right = middle - 1;//相反若中间值大于目标值 则说明中间下标往后的值都大
}
else
{
return middle;//反之结果为中间下标对应的值
}
}
return -1;
}