主要分为两种:区间按序列划分和区间按值划分
- 区间按序列划分:这种比较常见,一般是针对有序数组或者部分有序数组(如旋转有序数组),m是序列的中点,不断的缩小区间。33、81、153、154、69、162、4、74
- 区间按值划分:主要是无序数组会使用,m取可能结果的最小值和最大值的中值,所以就是不停的猜m是大了还是小了。常用于查找数组中第K小的元素等题。378、668、719、786
二分法常用的两个变形是upper_bound和lower_bound
- upper_bound:是用二分法查找大于target的第一个值。69
- lower_bound:是用二分法查找大于等于target的第一个值。1101、875