簡體   English   中英

Python氣泡排序-對元素進行多次排序

[英]Python bubble sort - Sorting an element more than once

目的是獲取一個正整數列表,並使用冒泡排序對其進行排序。 只要您輸入不需要將單個元素多次移動的列表,它就會起作用。 如何使元素移動一次以上?

例如,輸入[3,5,4,6,7]有效,但是[10,9,8,7,6]無效。

def bubbleSort(lis):    
        swapped = True
        while swapped:
                swapped = False
                for i in range(0,len(lis)-1):
                        if lis[i] > lis[i + 1] or lis[i] == lis[i+1]:
                            switch = lis[i]
                            lis[i] = lis[i+1]
                            lis[i+1] = switch
                return lis
                print(lis)


print(bubbleSort([3,5,4,6,7]))
print(bubbleSort([10,9,8,7,6]))

問題是您僅在通過列表之后返回。 等到swappedFalse

另外,進行swapped必須設置swapped

    swapped = True
    while swapped:
            swapped = False
            for i in range(0,len(lis)-1):
                    if lis[i] > lis[i + 1] or lis[i] == lis[i+1]:
                        swapped = True
                        switch = lis[i]
                        lis[i] = lis[i+1]
                        lis[i+1] = switch
    return lis

我刪除了print語句,因為您永遠無法到達它,這應該是調用程序的工作。

進入while循環時,不應將swapd設置為“ false”,因為這樣一來,循環僅進行一次迭代。 當遍歷整個列表時沒有更多交換時,應退出循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM