二分搜索算法是在排序列表中搜索特定元素的更有效方法。 与顺序检查元素的线性搜索不同,二分搜索将列表分成两半,并将目标元素与中间元素进行比较。 重复此过程,直到找到目标元素或搜索范围变空。
怎么运行的
- 从整个排序列表开始。
- 查找当前搜索范围的中间元素。
- 将中间元素与目标值进行比较。
- 如果中间元素等于目标值,则查找成功。
- 如果中间元素大于目标,则在范围的左半部分搜索。
- 如果中间元素小于目标,则在范围的右半部分搜索。
- 重复步骤2-6,直到找到目标元素或搜索范围变空。
例子
让我们考虑一个排序的整数列表,并希望使用二分查找找到数字 34。
排序列表:{12, 23, 34, 45, 56, 67, 89, 90}
- 从整个列表开始。
- 中间元素:56(位置 4)。 与34相比。
- 56 大于 34。在左半部分搜索。
- 新的中间元素:23(位置 1)。 与34相比。
- 23 比 34 小。在右半部分搜索。
- 新的中间元素:45(位置 3)。 与34相比。
- 45 大于 34。在左半部分搜索。
- 新的中间元素:34(位置 2)。 目标已找到。
C++ 示例代码
在给定的示例中,该 binarySearch
函数用于在整数排序列表中查找数字 34。 结果将是列表中 34 的位置(位置从 0 开始),如果未找到该数字,则结果为 -1。