第一次迭代开始时循环不变

时间:2012-06-05 15:58:56

标签: algorithm loops insertion-sort invariants loop-invariant

我正在修读数据结构和基础课程。算法,我们使用的书是CLRS的开创性工作。我在理解循环不变量时遇到一些问题,如第2.1章:插入排序中所述。

这本书说:

  

在第1-8行的for循环的每次迭代开始时,子目标A [1..j -1]由最初在A [1..j-1]中的元素组成,但是按排序顺序排列

现在,这让我很困惑。为什么在第一次迭代开始时它会成立? 假设要排序的数组看起来像{5,2,4,6,1,3}。现在,当for循环的第一次迭代开始时,A [1 .. j-1]不是按排序顺序,但是当迭代结束时它就是。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

  

[1 .. j-1]不是按排序顺序,当迭代结束时它是   虽然。

假设j的值最初从2开始,A[1.. j-1]将只包含长度为1的数组,根据定义,该数组已排序。