任务说明
实现二分查找算法。
二分查找反复把列表分成两半,只保留可能包含目标的一半,从而快速缩小范围,直到找到目标或排除全部位置。
注意 二分查找要求列表已经有序。
算法过程如下:
- 找到有序列表的中间元素,与目标比较。
- 若相等,查找完成。
- 若中间元素大于目标,排除它及其后面的所有元素。
- 若中间元素小于目标,排除它及其前面的所有元素。
- 若所有元素都已排除,目标不在列表中。
- 否则在剩余部分重复上述过程。
例如:
在有序列表 [4, 8, 12, 16, 23, 28, 32] 中寻找 23。
- 先比较 23 和中间值 16。
- 23 大于 16,排除左半部分,剩下
[23, 28, 32]。 - 再比较 23 和新的中间值 28。
- 23 小于 28,排除右侧,剩下
[23]。 - 找到目标。