跳到正文
信奥逐课

第 193 课

二分查找

🟢 入门 约 5 分钟

一句话理解

二分查找在有序数组里每次看中间,丢掉一半。

为什么要学

O(log n) 查找。后面所有二分的底子。

讲解

维护左右边界,取 mid。注意死循环:更新成 mid 还是 mid±1。

数组必须有序(或满足单调性)。

例子

int l = 1, r = n, ans = -1;
while (l <= r) {
    int mid = (l + r) / 2;
    if (a[mid] == x) { ans = mid; break; }
    if (a[mid] < x) l = mid + 1;
    else r = mid - 1;
}

看中间,小了去右边,大了去左边。

常见错误

练习 做完再看下一课

二分查找的时间?

在线练习 C++ 在浏览器里编译,代码不会上传

Ctrl / ⌘ + Enter 运行 · Tab 缩进

输出
 

进度保存在本机浏览器里。

左右方向键也可翻课