这是什么试图告诉我的?

时间:2015-06-14 08:03:50

标签: arrays algorithm sorting loops termination

我正在阅读这本书"如何通过计算机解决它"作者:RG Dromey。我被困在一个试图解释循环终止的句子上。这就是问题所在:

  

假设我们希望确定n个元素的数组严格按升序排列(即a[1] < a[2] < ... < a[n])。为此,我们可以使用以下说明:

a[n+1] := a[n];
i := 1;
while a[i] < a[i+1] do i := i+1

(现在,如果n是元素数量,那么i在这种情况下代表什么?它代表值吗?)

  

如果n被赋值为5且数据集为2,3,5,11,14,那么循环之前的第一个赋值将导致下面的数组配置:

(这是我感到困惑的地方。)

a[1]  a[2]  a[3]  a[4]  a[5]  a[6]
2     3     5     11    14    14
     

这两个14保证在a[i] < a[i+1]时测试i = n将为假,因此如果不在i = n之前,循环将正确终止。

(这令人困惑。)

1 个答案:

答案 0 :(得分:2)

我只是指数
我:= 1;意思是我是平等的1 i:= i + 1表示将i加1

n = 5

a [5] = 14
 a [5 + 1] = a [6] = 14

14&lt; 14是错误的 - 循环终止