关于二分查找写法的疑问
  • 板块学术版
  • 楼主封禁用户
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/7/19 17:38
  • 上次更新2023/10/27 19:30:20
查看原帖
关于二分查找写法的疑问
461366
封禁用户楼主2022/7/19 17:38

这里是我见过的二分查找的几种写法:

// defined l, r, m
while (l < r) {
    m = (l + r) / 2;
    if (check(m)) l = m;
    else r = m;
}
// answer is l
// defined l, r, m
while (l <= r) {
    m = (l + r) / 2;
    if (check(m)) l = m;
    else r = m - 1;
}
if (check(l))  // answer is l
else // answer is r
// defined l, r, m, a
while (l <= r) {
    m = (l + r) / 2;
    if (check(m)) {
        a = m;
        l = m + 1;
    } else {
        r = m - 1;
    }
}
// answer is a

请问:这三种写法有何异同?一般推荐使用哪种写法?

2022/7/19 17:38
加载中...