题目描述
若存在一个递增数组和一个目标值,要求在数组中找到目标值,并返回其索引;若目标值不在数组中,则返回它将被插入的索引值
此处在以往二分查找的基础上拓展了一个小地方
以往如果查找到目标值,那么返回索引值;若没有查找到目标值,那么返回 -1(代表没找到)
如今如果查找到目标值,那么返回索引值;若没有查找到目标值,那么返回其应该插入的索引位(使其仍为递增数组)
C 语言具体代码实现
此题二分查找的运用过程如下:
#include <stdio.h>
int searchInsert(int *nums, int numsSize, int target) {
int left = 0, right = numsSize-1;
while(left <= right){
int mid = (right-left)/2 + left;
if(nums[mid] == target){
return mid;
}else if(nums[mid] > target){
right = mid - 1;
}else{
left = mid + 1;
}
}
return left;
}
int main(void){
int nums[] = {1, 3, 5, 6};
int index = searchInsert(nums, 4, 5);
printf("索引为:%d", index); // 索引为:2
return 0;
}