这里是我见过的二分查找的几种写法:
while (l < r) {
m = (l + r) / 2;
if (check(m)) l = m;
else r = m;
}
while (l <= r) {
m = (l + r) / 2;
if (check(m)) l = m;
else r = m - 1;
}
if (check(l))
else
while (l <= r) {
m = (l + r) / 2;
if (check(m)) {
a = m;
l = m + 1;
} else {
r = m - 1;
}
}
请问:这三种写法有何异同?一般推荐使用哪种写法?