【问题标题】:Reversing two elements in list, based on condition根据条件反转列表中的两个元素
【发布时间】:2021-07-20 10:04:15
【问题描述】:

我正在尝试实现冒泡排序算法。 正如 here 所说,“冒泡排序是最简单的排序算法,如果相邻元素的顺序错误,它会重复交换相邻元素。”

视觉表现

( 5 1 4 2 8 ) –> ( 1 5 4 2 8 )

到目前为止,我已经能够分两步确定哪个元素大于另一个元素。完成此操作后,我在交换这些元素时遇到了一些麻烦。

目前,我有这样的东西。

代码

def bubbleSort(array):
    for i in range(len(array)-1):
        if array[i] > array[i+1]:
            #My attempt of switching the two elements in a list
            array[i+1],array[i] = array[i],array[i+1]
    return array
print(bubbleSort([5,1,4,2,8]))

很遗憾,由于我的逻辑不正确,我没有得到排序列表。

输出

[1, 4, 2, 5, 8]

期望的输出

[1 ,2 ,4 ,5 ,8]

我在这里做错了什么,为什么它不能正确排序,我可以做些什么来解决这个问题?非常感谢您提供详细解释以及提供的代码。

【问题讨论】:

    标签: python list sorting reverse bubble-sort


    【解决方案1】:

    您写的内容正确但不完整。 您刚刚完成了第一关。

    您需要做的就是运行所有其他通道,方法是将您的代码修改为:

    def bubbleSort(array):
        for j in range(len(array)):
            for i in range(len(array)-1):
                if array[i] > array[i+1]:
                    array[i+1],array[i] = array[i],array[i+1]
        return array
    print(bubbleSort([5,1,4,2,8]))
    

    您可以阅读这篇文章here 以获得更好的理解。

    【讨论】:

    • 好的,所以我反转元素的逻辑在哪里正确?但我基本上没有完成我的代码。美丽的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2018-10-12
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多