模拟卷一查找阅读与完善程序

在有序数组 a(下标 0 ~ n-1)中二分查找 key,请完善空缺 ① ②。

阅读与完善程序 完善1 · CSP-S 提高级 初赛 模拟试卷(一)
#include <iostream>
using namespace std;
int binarySearch(int a[], int n, int key) {
    int l = 0, r = n - 1;
    while (l <= r) {
        int mid = (l + r) / 2;
        if (a[mid] == key) return mid;
        else if (a[mid] < key)  ① ;
        else                    ② ;
    }
    return -1;
}
  • ① ________________________ ② ________________________
答案解析
① 当 a[mid] < key,目标在右半,令 l = mid + 1;② 当 a[mid] > key,目标在左半,令 r = mid - 1。用 mid+1/mid-1 避免死循环。

同知识点练习

本题收录于「CSP-S 提高级 初赛 模拟试卷(一)」,共 25 道题,全部提供答案与解析。可进入在线练习系统按知识点随机组卷、自动批改并归集错题。

进入在线练习 查看完整试卷 本类全部题目