在教科书中学习查找与排序算法
定义二分查找法(2分探索法)用于按从小到大(升序)或从大到小(降序)排好序的数据,每次与查找范围 中间 的值比较,把范围缩小为目标值所在的那一半。
解说以升序为例,目标值比中间值小就只保留前半部分,比中间值大就只保留后半部分,如此反复,直到找到或范围为空。每比较一次,候选就减少约一半,所以数据个数翻倍,比较次数也只增加 1 次左右。不过比较次数也会随目标值的位置而变,若目标值靠近开头,线性查找法有时反而用更少的次数就能找到。
类比就像在一沓按号码顺序叠好的挂号单里抽出中间那张,判断要找的号码在前还是在后,再到剩下的一半里看中间那张。
记忆钩子“二分”就是一分为二。英文 binary search 中的 binary 也是“二”的意思。