有人可以解释这个插入排序伪代码吗?
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 到插入排序的维基百科页面(其中有动画和正确的代码)。
我在学习"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 到插入排序的维基百科页面(其中有动画和正确的代码)。