«

99~100. 1道 二分查找法习题

点亮灯 发布于 阅读:59 C++


#include<iostream>
using namespace std;

int main() {
    int a[9]{ 1, 2, 3, 4, 5, 6, 37, 8, 100 };
    int b;
    int shur; //输入
    int zhueida,zhueixiao;
    int zhongjian;
    int n = sizeof a / sizeof a[1];
    int z = -1;

    /*for (int i = 0; i < n; i++) {
        cin >> a[i];
    }*/
    for (int i = 1; i < n; i++) {
        for (int j = i - 1; j >= 0; j--) {
            if (a[j]>a[j+1]) {
                b = a[j];
                a[j] = a[j + 1];
                a[j + 1] = b;
            }
            else {
                break;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        cout << a[i] << '\t';
    }
    cout << '\n';
    cin >> shur;
    zhueida = n-1;
    zhueixiao = 0;
    while (zhueida >= zhueixiao) {
        zhongjian = (zhueida + zhueixiao) / 2;

        if (shur >a[ zhongjian]) {
            zhueixiao= zhongjian+1;
        }
        else
        if (shur < a[zhongjian]) {
            zhueida = zhongjian - 1;
        }
        else {
            z = zhongjian;
            cout << "你找的数在数组在[" << z << ']';
            break;
        }
    }
    if (z == -1) {
        cout << "这个数组没有这个值" << endl;
    }
    cout << endl;
    system("pause");//卡屏函数
    return 0;
}