插入排序问题-如何遍历每个数字?

时间:2019-03-23 01:13:06

标签: python

我写了一个插入排序,但是没有对所有数字进行排序。

当我取出'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])

2 个答案:

答案 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])