【发布时间】:2017-02-15 02:51:15
【问题描述】:
我正在尝试通过编写一个小脚本来了解有关插入排序算法的更多信息,但是我卡住了。
一切都很好,除了一个数字被多次显示。
我的代码:
#
# Insertion Sort
#
def _ord(l):
lst=[]
for k in l:
if not lst:
lst.append(k)
continue
for a,b in enumerate(reversed(lst)):
if k <= lst[a]:
lst.insert(a,k)
if a == len(lst)-1:
lst.append(k)
return lst
if __name__ == '__main__':
l = [3,2,4,6,5,1]
print _ord(l)
输出:
[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
【问题讨论】:
-
旁注:虽然将其作为学习练习完全可以,但我应该注意,对于生产代码,您可能希望使用
list.sort/sorted(对一大堆进行排序元素)或thebisectmodule(将单个元素插入已排序的list)。对于一般用途的排序,基本上你用 Python 编写的任何东西都无法击败内置插件(在参考解释器上是 C 加速的)。
标签: python insertion-sort