插入搜索位置 C语言

搜索插入位置 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
【插入搜索位置 C语言】1.拿到这个题最简单的思路就是直接遍历,先寻找数组元素中的元素有没有与给定值相同,如果有,就输出与与他相等数组元素的下标;如果没有,就遍历数组,找到合适的位置。

int searchInsert(int* nums, int numsSize, int target){ int i; for(i = 0; i

2.更高端的方法是二分法,思路为将这个数组分为2段,然后找到该数组的中间值,比较给定值与中间值的大小,如果大于中间值,则在数组右半边再找到中间值,在进行比较。反之一样。
代码如下
int searchInsert(int* nums, int numsSize, int target){ int l,r; r=numsSize-1; while(l<=r) {int m=(l+r)/2; if(target==nums[m]) return m; else if(nums[m]>target) r=m-1; else l=m+1; } return l; }

    推荐阅读