【发布时间】:2021-08-22 08:10:55
【问题描述】:
我陷入了我自己编写递归插入排序的问题的中间。该程序运行良好,但没有选择要排序的最后一个元素
[5,4,3,2,1,0]。执行后:[1,2,3,4,5,0]
from array import *
mylist = array('i',[5,4,3,2,1,0])
def insertionsort(mylist):
if len(mylist)>1:
mylist = mylist[:len(mylist)-1]
insertionsort(mylist)
i = len(mylist)-1
key = mylist[i]
j = i-1
while j>=0 and key<mylist[j]:
mylist[j+1] = mylist[j]
j = j-1
mylist[j+1] = key
insertionsort(mylist)
print(mylist)
【问题讨论】:
-
正如 SrishtiAhuja 所说,在每次迭代中,您都会通过删除最后一个元素:
mylist = mylist[:len(mylist)-1]来不必要地缩短列表,因此它永远不会被排序。 (无论如何,在 Python 中仅供参考,您无需继续引用len(mylist),您可以使用切片符号ll[:-1])
标签: python insertion-sort recursive-datastructures