itslabtime.com

信息 · 计算机 · 算法探索

二分查找与有序条件

二分查找在有序数据中比较中间值,排除不需要的一半候选。首先需要确定维护候选区间的规则。

相关实验:线性查找与二分查找 →
线性查找与二分查找
线性查找与二分查找实验场景 →

意义与机制

线性查找依次检查数值,二分查找则检查当前区间的中间值。根据目标值比中间值大还是小,利用已有的排序关系排除其中一侧。

每次比较后,都必须保持以下条件:如果目标值存在,它就位于剩余区间内。区间为空时,便可得出目标值不存在的结论。

关系与条件

候选人数大约随着 n/2ᵏ 减少,因此比较次数呈对数增长。对于模拟中的无重复列表,当 n ≥ 1 时,最大比较次数可以与 ⌊log₂n⌋ + 1 进行比较。

排序的成本必须与搜索成本分开考虑。当解决在包含重复值的列表中找到第一个和最后一个位置的问题时,必须调整停止条件。

观察实验中需要注意的事物

二分搜索在每次探测时,将候选范围减半。

排序后的整数列表没有重复元素。 两种方法使用相同的列表。

关键关系与符号

binary steps ≤ ⌊log₂n⌋ + 1

符号及公式中使用的单位
符号含义单位
n数据项数量个
k比较次数与范围减少量次

工作实例

二分搜索需要什么?

排序列表 · 二分搜索在每次查询时,将候选范围减半。

常见误解

  • 仅对未排序的列表应用中间值比较规则,并不能得到正确的二分查找。

通过实验探索这个概念

参考文献

OpenStax ·《计算机科学导论》(英文)