给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
由题意得,时间复杂度为 O(log n) ,所以应使用二分法查找
从数组中间值开始查找,如果不是中间值,则缩小边界从左半或右半搜索。
int searchInsert(int* nums, int numsSize, int target){
int low=0,high=numsSize-1,mid;
while(low<=high){
mid=(low+high)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]<target)
low=mid+1;
else
high=mid-1;
}
return low;
}