今天有人问过Lazy Binary Searches。不知道那是什么,我找了它,发现了这篇文章:What is Lazy Binary Search?从本质上讲,懒惰二进制搜索是一个二元搜索,你首先比较不等式,并且只比较一次的平等 - 最后。 / p>
重点是什么?在什么情况下检查A<B
是否容易做,但检查A=B
是否如此困难,你想尽可能避免它吗?
答案 0 :(得分:5)
每次迭代的比较少一点。
当然,这是以较差的平均运行时间为代价的(你没有机会提前返回)。 1 但有时候你关心的是最坏情况的运行时(考虑很难) - 实时应用程序,或流水线硬件实现)。
<子> 1。虽然渐近复杂度不会改变。
答案 1 :(得分:4)
懒惰搜索的一件事是在序列中找到等于目标的第一个元素(假设目标在序列中)。
如果您有多个与目标匹配的元素,那么非惰性搜索会为您提供其中任何一个。
因此,C ++库的binary_search
可以实现为非惰性(我想象通常是这样),而lower_bound
则不能。
答案 2 :(得分:0)
嗯,就是在“LAZY”搜索中,每次将元素X与中心元素进行比较时,都会跳过检查是否相等。只有在最后才检查是否平等。我猜你所做的只是将搜索减少一个==
条件。