循环的第一次迭代的Sentinel值?

时间:2012-12-12 01:31:41

标签: algorithm pseudocode sentinel

想象一下下面的伪代码

objects[i], 1 <= i <= n 

objects[0] = 0

for i from 1 to n
  if(objects[i] - objects[i-1] > constant)
    do something

我想知道作业objects[0] = 0是否有特定的名称。 我知道当这些值用于停止循环时,它们被称为sentinel值。 然而,在这种情况下,我正在使用它,以便评估的第一个对象(对象[1])将有一些东西要比较 - 显然,objects[0]不是真正的对象,只是一种标志。它仍被称为哨兵价值吗?还有另一个名字吗?或者我不应该这样做吗?

如果我没有说清楚,我应该尝试以另一种方式解释我的问题。

2 个答案:

答案 0 :(得分:2)

Cormen等。写入算法导论(第3版),第238页:

  

哨兵是一个虚拟对象,可以让我们简化边界   条件。

此定义足以说明您的使用情况(例如,在CLRS中使用无限的标记值来简化mergesort的合并例程。)

答案 1 :(得分:1)

无论是在开头还是结尾,我总是把它称为“哨兵”,而且还没有被解雇。