Search Insert Position

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.

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


你可能感兴趣的:(Search Insert Position)