二分算法的解题过程及总共四种情况的讨论
解题步骤
-
确定二分性质
-
确定分界点
-
确定更新区间
-
确定取整方向
小技巧: mid, l 和 r 的赋值语句有且只有一个 + 1
例:
从 0 1 2 3 4 5 中返回 3 的下标 3
1.二分性质
根据是否 >= 3 将整个数组分为 0 1 2 和 3 4 5, 左分界点为 2, 右分界点为 3
2.分界点
寻找的结果是右分界点 3
3.确定更新区间
原区间为 [l, r], 暂定 mid = (l + r) / 2
当 mid 满足二分性质时, 即 mid 在 3 4 5 这一侧时, 更新区间为 [l, mid]
当 mid 不满足二分性质时, 即 mid 在 0 1 2 这一侧时, 更新区间为 [mid + 1, r]
4.确定取整方向
小技巧: 有且只有一个 + 1
小技巧的含义是: 在 mid 和 l 和 r 的赋值语句中有且只有一个 + 1
由于更新区间中有一个 + 1, 即 l