搜索插入位置
题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
【插入搜索位置 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;
}
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 个人理解|【C语言基础之类型转换】
- c语言|【C语言】自定义类型 结构体 枚举 联合
- 学习分享|【C语言函数基础】