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

fua*_*ark 1 algorithm loops invariants insertion-sort 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]不是按排序顺序,但是当迭代结束时它就是.

我在这里错过了什么?

Bro*_*ass 5

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

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