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]它不是一个真实的对象,只是一个标志。它仍然被称为哨兵值吗?这个还有别的名字吗?还是我根本不应该这样做?

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

4

2 回答 2

2

科门等人。在第 238 页的算法简介(第 3 版)中写道:

哨兵是一个虚拟对象,它允许我们简化边界条件。

这个定义足够宽泛,足以说明您的使用情况(例如,在 CLRS 中使用无穷大的标记值来简化合并排序的合并例程)。

于 2012-12-12T09:37:14.133 回答
1

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

于 2012-12-12T01:35:28.260 回答