我写了一个插入排序,但是没有对所有数字进行排序。
当我取出'y = x-1'并单独放入'x-1'时,该算法起作用。使用该变量,算法将无法正常工作。
请告诉我该算法的问题。
def insertsort(alist):
for x in range(1, len(alist)):
y = x-1
while alist[y] > alist[x]:
alist[y], alist[x] = alist[x], alist[y]
x -= 1
print(alist)
insertsort([1,2,5,7,4,11,8,75,54,101,99])
答案 0 :(得分:1)
您可能应该做自己的作业,但是,您可以进行以下操作:
def insertsort(a):
print(a)
# finish the sort from left to right
for fin in range(1, len(a)):
tst = fin
# sort from tst down to zero, swapping curr tst w/ lower as needed
while(tst > 0 and a[tst] < a[tst-1]):
# swap
a[tst], a[tst-1] = a[tst-1], a[tst]
# follow tst down
tst -= 1
print(a)
insertsort([9,8,7,6,5,4,3,2,1])
答案 1 :(得分:-1)
1。x-= 1不必要,也许您可以删除并再次运行。 2.您的排序仅完成一次。 3.(print(alist)),此句子应与(for ...)对齐,它只会得到一个列表。代码如下,仅供参考。
def insertsort(alist):
for x in range(1,len(alist)):
for y in range(1,len(alist)):
z = y-1
while alist[z] > alist[y]:
alist[z], alist[y] = alist[y], alist[z]
print(alist)
insertsort([3,2,5,7,4,11,8,75,54,101,99])