返回给定值在有序数组中的插入位置

注意,数组中的数值可能有重复。

题目描述:给定一非降序数组,数值可能有重复。再给定一值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;
}

点赞