首页 > 试题广场 >

下面的程序完成了以下功能:在非降序列中二分查找一个数,当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
A[r] > v
A, 0, 9, 40

不知道对不对啊,欢迎评论!
发表于 2019-06-27 17:38:59 回复(1)
更多回答
l + ((r-l)>>2)
A[mid] > v
A,0,9,40
发表于 2019-07-02 17:20:28 回复(0)