1.题目描述
2.思路
题目要求算法复杂度为对数级,且还是一个有序的整数数组,显而易见,这题需要运用二分查找。
3.算法步骤
(1)初始化,left指向首元素,right指向尾元素
(2)mid指向区间的中间元素,之后,将arr[mid]与给定值比较
(3)如果arr[mid]>target,说明目标值在下半区间,将right = mid - 1
(4)如果arr[mid]<target,说明目标值在上半区间,将left = mid +1
(5)如果arr[mid]=target,说明找到目标值,直接返回mid
(6)重复(2)~(5),如果没有返回值,则返回left,即该元素待插入的位置
4.复杂度
时间复杂度:O(n)
空间复杂度:O(1)
5.CODE
int searchInsert(int* nums, int numsSize, int target)
{
//采用折半查找
//初始化
int left = 0,right = numsSize-1;
int mid = 0;
while(left