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