这个用于插入排序的伪代码如何工作?

时间:2012-11-02 21:03:43

标签: pseudocode insertion-sort

我正在接受伪代码类,我正在遵循插入排序算法,除了第7行。有人可以解释这意味着什么?到目前为止的前几行是有道理的:第6行表示索引/占位符A[i]向右前进一步。这是下一步我不清楚“我< - i - 1”。

1 for j ← 2 to length[A]
2   do key ← A[j]
3     ▹ Insert A[j] into the sorted sequence A[1  j - 1].
4     i ← j - 1
5     while i > 0 and A[i] > key
6      do A[i + 1] ← A[i]
7         i ← i - 1
8     A[i + 1] ← key

2 个答案:

答案 0 :(得分:0)

当我大于0时, 做一些事, 然后从i中减去一个。 否则,循环将永远继续。 (无限循环)

答案 1 :(得分:0)

实际上,第6行将下一个单元格的值指定为当前单元格的值。第7行将索引向后移一。实际上,假设你在循环中达到了这一点:

(Assuming the first item is at index 1)
A = { 1, 2, 3, 4, 5, 6 }
i = 4

Line 6: Set A[i+1] to have the value of A[i]
        ==> A[5]                        A[4]
        ==> A = { 1, 2, 3, *5*, 5, 6 }

Line 7: Shift i to the next lower position
        ==> i = 3

在此之后,你已经到达循环的末尾,并返回第5行的循环顶部,在那里测试循环的条件并继续。