打印每个通过的排序列表

时间:2018-12-05 03:48:57

标签: python

我正在尝试打印每次冒泡排序以及更改次数。
例如:

1 [1、3、5、7、2、9、4、6、8]

2 [1、3、5、7、2、9、4、6、8]

3 [1、3、5、7、2、9、4、6、8]等。

到目前为止,这是我的代码:

def main():
    lst = [1, 3, 5, 7, 9, 2, 4, 6, 8]
    bubbleSort(lst)


def bubbleSort(inputList):
    didSwap = True

    while didSwap:
        didSwap = False

        for i in range(len(inputList) - 1):

            if inputList[i] > inputList[i + 1]:
                inputList[i], inputList[i + 1] = inputList[i + 1], 
                     inputList[i]
                didSwap = True
                print(inputList)


main()

` 这是此代码的输出:

[1, 3, 5, 7, 2, 9, 4, 6, 8]
[1, 3, 5, 7, 2, 4, 9, 6, 8]
[1, 3, 5, 7, 2, 4, 6, 9, 8]
[1, 3, 5, 7, 2, 4, 6, 8, 9]
[1, 3, 5, 2, 7, 4, 6, 8, 9]
[1, 3, 5, 2, 4, 7, 6, 8, 9]
[1, 3, 5, 2, 4, 6, 7, 8, 9]
[1, 3, 2, 5, 4, 6, 7, 8, 9]
[1, 3, 2, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

很显然,它会正确地对列表进行排序并打印每遍。但是,它不会在每次通过的开始时打印每次更改时的计数。我想念什么?

1 个答案:

答案 0 :(得分:0)

添加变量计数,并在每次发声时增加计数

def bubblesort(InputList):
    didswap = True
    count = 0

    while didswap:
        didswap = False
        count += 1

        ...

        print(count, InputList)