int lower_bound(int *array, int size, int key)
{
int first = 0, middle;
int half, len;
len = size;
while(len > 0) {
half = len >> 1;
middle = first + half;
if(arrar[middle] < key) {
first = middle+1;
len = len - half-1;
}
elselen = half; //在左边子序列(包含middle)中查找
}
return first;
}
lower_bound()
用途
这个函数是从已排好序的数列a中利用二分搜索找出指向满足ai >= k的ai的最大指针
STL中的代码实现
int upper_bound(int *array, int size, int key)
{
int first = 0, len = size-1;
int half, middle;
while(len > 0){
half = len >> 1;
middle = first + half;
if(array[middle] > key) //中位数大于key,在包含last的左半边序列中查找。len = half;
else{
first = middle + 1; //中位数小于等于key,在右半边序列中查找。len = len - half - 1;
}
}
return first;
}
lower_bound()用途这个函数是从已排好序的数列a中利用二分搜索找出指向满足ai >= k的ai的最小指针STL中的代码实现int lower_bound(int *array, int size, int key){ int first = 0, middle; int half, len; len = size; while(len > 0) {