首页 > 试题广场 >

下面的程序完成了以下功能:在非降序列中二分查找一个数,当v存

[问答题]

下面的程序完成了以下功能:在非降序列中二分查找一个数,当v存在时返回它出现的第一个位置,如果不存在,返回这样一个下标i,在此处插入v(原来的元素A[i], A[i+1],…全部向后移动一个位置)后序列仍然有序:

#include<iostream>

using namespace std;

int lower_bound(int *A, int l, int r, int v) {

    int mid;

    while (l < r) {

        mid =                    ;

        if (             ) r = mid;

        else l = mid + 1;

    }

return l;

}

int main() {

    int A[10] = {0, 0, 1, 2, 4, 5, 10, 20, 20, 30};

// 在 A 数组里用lower_bound查找 40

    cout << lower_bound(           ) << endl;

    return 0;

}
l + (r - 2) << 1
A[mid] >= v
A, 0, 10, 40
发表于 2019-07-12 15:30:33 回复(0)
mid=(l+r)/2
A[mid]>v
low_bound(A,0,9,40)
发表于 2019-07-11 17:50:01 回复(0)