有人可以解释这个插入排序伪代码吗?

Can someone explain this Insertion sort pseudocode?

我在学习"Schaum's Outline of Principles of Computer Science"第2章时得到了这个伪代码:

Insertion_Sort(num_list)

length <-- length of num_list

number_index <-- 2

while{number_index <= length} {
    newNum  <-- num_list[number_index]
    sorted_index <-- number_index - 1
    while newNum < num_list[sorted_index] AND sorted_index > 0 {
        num_list[sorted_index + 1]  <-- num_list[sorted_index]
        sorted_index            <-- sorted_index - 1
    }
    num_list[sorted_index + 1] = newNum
}
end

number_index不会卡在2吗?

代码num_list[sorted_index + 1] = newNum后面不应该有:number_index <-- number_index + 1吗?

是哪里出错了,还是我没看懂伪代码?

谁能解释一下这个伪代码是如何工作的?

注意:我不是程序员(非常新),到目前为止我只研究了 Charles Petzold 的 "CODE"。

你是对的,伪代码是不正确的,因为 number_index 永远不会递增,所以代码会无限循环。

代码在代码的倒数第二行中在语法上不正确,使用 = 符号来表示赋值而不是它已经建立的 <-- 符号。这些名称也不完全准确(newNum 实际上不是一个新号码,只是一个存储的号码)。

下面是使用给定语法的代码。

Insertion_Sort(num_list)

length <-- length of num_list

number_index <-- 2

while{number_index <= length} {
    newNum  <-- num_list[number_index]
    sorted_index <-- number_index - 1
    while newNum < num_list[sorted_index] AND sorted_index + 1 > 0 {
        num_list[sorted_index + 1]  <-- num_list[sorted_index]
        sorted_index            <-- sorted_index - 1
    }
    num_list[sorted_index + 1] <-- newNum
    number_index <-- number_index + 1
}
end

这是一个动画,展示了代码应该做什么

a link 到插入排序的维基百科页面(其中有动画和正确的代码)。