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);
}