整数的二分查找那些大于小于号我老是搞不清,比如究竟是while(l < r)还是while(l <= r),以及这些大于小于号是如何搭配的。我看 OI wiki 上对这个讲的也很少,请问这些玩意到底该怎么理解和记忆呢?以及有没有什么讲的比较清楚的博客.
while(l < r) // 没有等于
{
mid = (l + r) >> 1;
if(a[mid] >= x) r = mid; // 有等于
else l = mid + 1;
}
说的就是上面这段代码中的那些不等式符号,还有 r 和 l 到底什么时候要 +1