【发布时间】:2016-01-19 17:19:29
【问题描述】:
我正在检查 CLRS 中的插入排序算法。我不确定哪个是正确的实现 -
实施 1:
def Insertion_sort():
list = [3,5,1,7,2,4]
for j in xrange(1,len(list)):
i = j-1
while i>=0 and list[i] > list[j]:
swap(list, i, j)
j = i
i = i-1
实施 2:
def Insertion_sort2():
list = [3,5,1,7,2,4]
for j in range(1,len(list)):
i = j-1;
while i>=0 and list[i]>list[j]:
i = i-1;
swap(list, i+1, j)
谢谢
【问题讨论】:
-
你试过了吗? (在 CLRS 算法中你在哪里看到
swap?) -
他们都为我工作。
-
@user3886450:为清楚起见,要使排序功能起作用,它必须对所有输入起作用。在
[3, 5, 1, 7, 2, 4]的各种前缀上尝试第二个(如果您愿意,可以将4更改为6),您会发现它恰好导致这个特殊情况只是偶然的。 (或者,可以说是不合时宜的,因为结果是隐藏了一个明显的错误。) -
您的示例都不能使用
javac或g++编译。 -
@stackoverflowuser2010:这并不奇怪,因为它们是用 Python 编写的。
标签: algorithm insertion-sort clrs