微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据条件反转列表中的两个元素

如何解决根据条件反转列表中的两个元素

我正在尝试实现冒泡排序算法。 正如它所说的 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,5,8]

期望输出

[1,8]

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

解决方法

你写的是正确但不完整的。 您刚刚完成了第一遍。

您需要做的就是通过将代码修改为:

运行所有其他传递
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 以获得更好的理解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。