一、二分查找算法原理
1. 算法介绍
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
2. 算法模板
这里为大家提供两个模板,一定要熟记于心,因为其实二分查找算法的本质非常简单,也很好理解,实现也不难,但是常常因为边界问题和死循环导致无法AC,模板如下:
(1)左边界(其实是≥x最小的位置)
当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算mid时不需要加1。
int bsearch_1(int l