繁体   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