闵溪端 2022-11-26 16:00 采纳率: 91.7%
浏览 4
已结题

python双向冒泡

双向冒泡:①从左往右,交换相邻的元素,从而达到循环一边可以把最大的元素放在右边;②从右往左进行冒泡,从而把小的元素放在左边。循环直至排序结束。
用代码块功能插入代码,请勿粘贴截图
def bubbleSort(alist):
    for passnum in range(len(alist)-1, 0, -1):
        for i in range(passnum):
            if alist[i] > alist[i+1]:
                alist[i], alist[i+1] = alist[i+1], alist[i]

alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
bubbleSort(alist)
print(alist)


def shortBubbleSort(alist):
    exchanges = True
    passnum = len(alist)-1
    while passnum > 0 and exchanges:
       exchanges = False
       for i in range(passnum):
           if alist[i]>alist[i+1]:
               exchanges = True
               alist[i], alist[i + 1] = alist[i + 1], alist[i]
       passnum = passnum-1


alist = [20, 30, 40, 90, 50, 60, 70, 80, 100, 110]
shortBubbleSort(alist)
print(alist)

我的解答思路和尝试过的方法
我想要达到的结果双向冒泡:①从左往右,交换相邻的元素,从而达到循环一边可以把最大的元素放在右边;②从右往左进行冒泡,从而把小的元素放在左边。循环直至排序结束。
  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-11-26 18:00
    关注
    def biBubbleSort(alist):
        exchanges = True
        l = len(alist)
        passnum = l-1
        while passnum > l//2 and exchanges:
            exchanges = False
            for i in range(l-passnum-1, passnum):
                if alist[i]>alist[i+1]:
                    exchanges = True
                    alist[i], alist[i + 1] = alist[i + 1], alist[i]
                j = l-i-1
                if alist[j-1]>alist[j]:
                    exchanges = True
                    alist[j], alist[j-1] = alist[j-1], alist[j]
            passnum = passnum-1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题