停止二进制搜索的证明

时间:2012-07-04 23:04:22

标签: algorithm binary-search

l = -1; u = n;
while l+1 != u
    m = l + (u-l)/2;
    if x[m] < t
        l = m;
    else
        u = m;
p = u;
if p >= n || x[p] != t
     p = -1;

我们假设x [-1]&lt;在上面的代码中,t和x [n]> = t并且n> = 0。 上面的代码是一个修改过的二进制搜索,它可以在整数数组x [0..n-1]中返回整数 t 第一个出现,而不是返回一个随机的一。

我的问题是这样的:

为什么以上代码总是停止?任何人都可以解释或证明它吗?

谢谢,

1 个答案:

答案 0 :(得分:4)

因为在每次迭代中,lu之间的差距在整数算术的约束内减半。所有(正)整数减半的序列必须最终达到1,这是终止条件。