为什么二分快

8 分钟

二分快在“每步都砍掉一半”。设一共有 个数,第一次比完剩 ,再比剩 ……直到只剩 个。问“ 连续除以 几次到 ”,答案就是

所以二分的复杂度是 个数,因为 ,最多约 次就能定位;线性查找最坏要 次。数据越多差距越夸张: 万个数,线性要百万次,二分只要约 次()。

// 直观感受:n 每翻一千倍,二分只多约 10 步
// n=1e3 -> ~10;  n=1e6 -> ~20;  n=1e9 -> ~30

代价是必须先有序。若数据只查一两次,排序的 可能比省下的还贵;查询次数多时才值得。

小纸条

一个个找要 1000 次,二分大约只要几次?

登录 后可看答案