注意,数组中的数值可能有重复。
题目描述:给定一非降序数组,数值可能有重复。再给定一值key,请返回第一个大于key的数组元素的下标。如果没有,则返回数组的长度.
int binary_search(int* array, int length, int key)
{
if(array[length - 1] < key)
return length;
int left = 0, right = length - 1;
int mid = (left + right) / 2;
while(left < right)
{
if(array[mid] >= key)
right = mid;
else
left = mid + 1;
mid = (left + right) / 2;
}
if(array[left] >= key)
return left;
}