二分查找
int searchInsert(int* nums, int numsSize, int target)
{
int left = 0, right;
right = numsSize - 1;
while(left <= right)
{
int middle = left + (right - left) / 2;
if(nums[middle] > target) {
right = middle - 1;
}
else if(nums[middle] < target) {
left = middle + 1;
}
else
return middle;
}
return left;
}
- 二分查找是什么:二分查找是一个可以在数组中快速的查找需要的元素。查找一个元素,每次查找都会相应的减半,直到查找出需要的元素。 时间复杂度O(log n)。但这题增加了点难度,如果查找的元素不存在数组中的时候则需要返回按顺序插入的位置。考虑插入位置ins。
-
成立的条件: nums[ins-1] < target <= right[ins]
- nums数组,如果查找的元素在nums数组中,返回middle。那如果查找的元素不在nums数组,我们需要按顺序的插入元素left。