【发布时间】:2017-11-07 22:43:39
【问题描述】:
我目前正在阅读 TCRC Introduction to Algorithms 3rd edition 教科书的第 2 章,并且正在阅读作者对该算法的循环不变量的解释。我理解作者的初始化和维护逻辑。然而,终止是我有点陷入困境的。作者声称在终止时,j = n + 1。然而,在算法的伪代码中,j 从 2 循环到 n。那么 j = n - 1 不应该吗?
编辑:本书的插入排序伪代码是:
for j = 2 to A.length
key = A[j]
// Insert A[j] into sorted sequence A[1...j - 1]
i = j - 1
while i > 0 and A[i] > key
A[i + 1] = A[i]
i = i - 1
A[i + 1] = key
编辑:仔细阅读后,我终于明白为什么 j = n + 1 在终止期间。这是因为 for 循环从 2 变为 n(包括),所以在 j 超过 n 之后,循环终止,因此在终止时 j = n + 1。感谢您的帮助。
【问题讨论】:
-
你能提供伪代码吗?
-
您必须提供问题的文本。无法从您发布的内容中看出。
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topic 和 how to ask 在这里申请。
-
抱歉,这是我第一次在这个网站上发帖,所以我不习惯这里的格式和约定。我在编辑的 OP 中提供了伪代码。
-
在这种情况下
n是什么?是A.length吗?
标签: algorithm insertion-sort loop-invariant