【问题标题】:Loop invariant when first iteration starts第一次迭代开始时循环不变
【发布时间】:2012-06-05 15:58:56
【问题描述】:

我正在学习数据结构和算法的基础课程,我们使用的书是 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] 不是排序顺序,当迭代结束时它是。

我在这里错过了什么?

【问题讨论】:

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


    【解决方案1】:

    A[1.. j-1] 没有排序,当迭代结束时它是 不过。

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

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2023-04-01
      • 2010-12-28
      • 2015-11-02
      • 2018-04-21
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多