CLRS第三版间隔搜索,PG 351伪代码是否是最佳选择?

时间:2019-04-29 16:39:46

标签: clrs

Clrs提出了用于间隔搜索的伪代码,该伪代码用于查找与树T中的间隔i重叠的间隔。但是我发现,通过我自己的一些修改,它可以以恒定因子运行得更快。

clrs伪代码类似于

INTERVAL-SEARCH(T, i)
    x = T.root
    while x != T.nil and i does not overlap x.int
        if x.left != T.nil and x.left.max ≥ i.low
            x = x.left
        else x = x.right
    return x

但是,我知道您是否将其更改为

INTERVAL-SEARCH(T, i)
    x = T.root
    while x != T.nil and i does not overlap x.int
        if x.left != T.nil and x.left.max ≥ i.low
            x = x.left
        else if i.high > x.int.low and x.right.max ≥ i.low
            x = x.right
        else x = T.nil
    return x

由于代码向右移动,所以它的左移时间不再重要,因为它的T.nil或x.left.max

x.high i.high。

如果是前者,则向右走是有意义的,因为右侧仍然可以找到x.high≥i.low的间隔,但是如果是后者,则右侧没有间隔将改变以下事实: x.low> i.high。同样,如果x.right.max

我知道它不会改变渐近的运行时间,但是我很好奇,因为我不理解为什么书不只陈述最优化的伪代码,因为这样看来更优化。而且,如果代码很早就进入x.right,它可能会以更快的速度运行。

0 个答案:

没有答案