我正在修读数据结构和基础课程。算法,我们使用的书是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]不是按排序顺序,但是当迭代结束时它就是。
我在这里缺少什么?
答案 0 :(得分:5)
[1 .. j-1]不是按排序顺序,当迭代结束时它是 虽然。
假设j
的值最初从2开始,A[1.. j-1]
将只包含长度为1的数组,根据定义,该数组已排序。