当前位置: 首页 > 知识库问答 >
问题:

Python气泡排序

冯沛
2023-03-14

嗨,我用冒泡排序查看了其他帖子,但解决方案在我的例子中不起作用:所以算法在我循环时重复了几次之后才起作用。但我如何在不使用输入的情况下做到这一点?这是我的代码,你知道我的意思:

x = [0, 0, 1, 3, 3, 2, 2, 1, 0, 4, 5]

h = None
flag = True

while flag == True:
    #flag = True
    for i in range(len(x) - 1):
        if x[i] > x[i + 1]:
    #       flag = False
            h = x[i]
            x[i] = x[i + 1] 
            x[i + 1] = h
    print(x)        

    #input = raw_input('Satisfied? ')
    #if input == 'q':
    #   break

print(x)
'''
we can replace variable h, with:
x[i] , x[i+1] = x[i+1], x[i]
'''

共有3个答案

伍溪叠
2023-03-14

我为您的代码进行了一些重构:

for num in range(len(mylist)-1, 0, -1):
    for i in range(num):
        if mylist[i] > mylist[i+1]:
            mylist[i], mylist[i+1] = mylist[i+1], mylist[i]
华景明
2023-03-14

使用该算法,您可以预先知道排序整个数组需要多少步(最大),因为该算法是收敛的和有界的。在每个通道中,最高的未放置值被正确放置,因此您需要n-1个通道来完成排序。

这里有一个例子:

mylist = [54,26,93,17,77,31,44,55,20]

for num in range(len(mylist)-1, 0, -1):
    for i in range(num):
        if mylist[i] > mylist[i+1]:
            aux = mylist[i]
            mylist[i] = mylist[i+1]
            mylist[i+1] = aux


print(mylist)

希望能有帮助

PS:当列表在n-1过程之前排序时停止,最好使用“插入算法”。这里有一个插入排序和冒泡排序之间的有趣比较:插入排序和冒泡排序算法

阎德宇
2023-03-14

您可以使用python中的sorted函数,将代码更改为:

while flag == True:
    for i in range(len(x) - 1):
        if x[i] > x[i + 1]:
            h = x[i]
            x[i] = x[i + 1] 
            x[i + 1] = h

    if sorted(x) == x: #x is already sorted
        flag = False

编辑:不使用python内置排序函数的替代解决方案:

while flag == True:
    flag = False
    for i in range(len(x) - 1):
        if x[i] > x[i + 1]:
            flag = True
            h = x[i]
            x[i] = x[i + 1] 
            x[i + 1] = h

希望我帮了忙!

 类似资料:
  • 我需要使用气泡排序法按名称对我的杂货库存进行排序。 显然,我的代码不是按名字排序的 顺便说一句,库存存储的数据来自文件输入。 这是我的代码。 这是我的比较方法从我的超类(杂货店项目)

  • 本文向大家介绍气泡排序在Go Lang,包括了气泡排序在Go Lang的使用技巧和注意事项,需要的朋友参考一下 冒泡排序是一种排序算法,它通过交换顺序错误的元素来工作。在多次遍历中,它检查相邻元素的顺序是否正确(递增)。 冒泡排序的时间复杂度为O(n ^ 2),因为它需要两个嵌套循环才能检查相邻元素。 例如,让我们看下面的未排序数组- 冒泡排序算法首先遍历整个数组,然后在另一个循环中检查相邻元素是

  • 所以我的代码有问题。我必须编写一个程序来对一个外部文本文件进行排序(基本上是一个按随机顺序排列的随机数列表)。所以我试着按照教授的步骤去做,即使我做了,我也没有得到正确的输出。输出应该如下所示: 1 2 2 2 3 3 5 5 6 6 11 13 13 13 13 16 17 17 19 25 27 27 33 34 37 37 43 45 49 51 52 54 57 58 60 63 64 6

  • 我是Java新手,所以一直在尝试将一些旧的JS练习翻译成Java。

  • 定义 气泡组件。 图片展示 代码演示 import Popover from 'pile/dist/components/popover' const {Tooltip} = Popover <Tooltip overlay={"说明文字"} placement='left' isShow={popleftshow} idName='newIndex' setTooltipC

  • 本文向大家介绍冒泡排序 (python版)相关面试题,主要包含被问及冒泡排序 (python版)时的应答技巧和注意事项,需要的朋友参考一下 参考回答: