循环的第一次迭代的哨兵值是什么?

3
想象以下伪代码:
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是否有特定的名称。我知道当这些值用于停止循环时,它们被称为哨兵值。但在这种情况下,我是为了让第一个被评估的对象(objects [1])有东西可以进行比较 - 显然,objects [0]不是真正的对象,只是一种标志。它仍然被称为哨兵值吗?还有其他名称吗?或者我根本不应该这样做?如果我没有表达清楚,让我知道,我应该尝试以另一种方式解释我的问题。

1
“Sentinel value” 在我看来很好。或者也可以说“边界条件”? - Nemo
2个回答

2

Cormen等在《算法导论》(第三版)第238页中写道:

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

这个定义足够广泛,可以涵盖您的用途(例如,CLRS中使用无限的哨兵值来简化归并排序中的归并程序)。


1

我一直称它为“哨兵”,无论是在开头还是结尾,但我还没有因此被解雇。


1
但这根本不符合哨兵值的定义:“一种特殊的值,其存在保证了循环的终止”(来源:http://en.wikipedia.org/wiki/Sentinel_value) - dcastro
2
@dcastro:Cormen等人写道:“哨兵是一个虚拟对象,它使我们能够简化边界条件。” - Nabb
@Nabb:啊,那就解决了。我找到的所有其他定义都没有考虑到这些情况。这实际上是为了我的硕士论文,这个引用非常有帮助。你能把它作为一个答案吗,这样我就可以接受它了吗? - dcastro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接