Given a sorted array and a target value, return the index if the target is found. If not, return the index
where it would be if it were inserted in order.
where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
#include <iostream>
using namespace std;
//用二分查找,找到了返回pos,找不到则返回first.
int searchInsert(int a[],int n,int tar)
{
if(n==0)
return 0;
int first = 0;
int last = n-1;
while(first<last)
{
int mid = (first+last)/2;
if(a[mid] == tar)
return mid;
else if(a[mid]<tar)
first = mid+1;
else
last = mid -1;
}
return first;
}
void main()
{
int a[] = {1,3,5,7};
int len = sizeof(a)/sizeof(int);
int pos = searchInsert(a,len,6);
printf("%d\n",pos);
}
本文详细介绍了如何使用二分查找算法解决搜索插入位置的问题,包括算法原理、实现代码及几个实例分析。
456

被折叠的 条评论
为什么被折叠?



