我正在接受伪代码类,我正在遵循插入排序算法,除了第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
答案 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行的循环顶部,在那里测试循环的条件并继续。