python 冒泡排序

下图中的数字是无序的,通过冒泡排序两两比较可产生一个由小到大的顺序列表

在这里插入图片描述

理解:相邻元素相互比较大小并进行交换,导致相对于偏小(偏大)的元素不断往某一方向移动。 是一种交换排序,类似相同深度的两个气泡,大的会先浮出水面

import random
# 定义冒泡排序函数
def bubble(info):
    for i in range(len(info) - 1):# 外循环每一次使得有序的数增加一个
        recycle = False # 用于优化(没有交换时表示已经有序,结束循环)
        for j in range(len(info) - 1 - i):#内循环控制两两数之间比较的次数,减i表示通过上一次外循环已经有一个最大的数在最上面了,那么此时内循环次两数交换次数就少了一次
            if info[j] > info[j + 1]:  # 判断相邻两数的大小
                info[j], info[j+1] = info[j+1], info[j] # 如果第一个元素大于第二个元素就进行交换
                recycle= True
        if not recycle:#如果没有交换说明列表已经有序,结束循环
            break
# 验证算法正确性
info= list(range(10))#产生一个有序列表
print(info)
random.shuffle(info) # 调用shuffle函数打乱有序列表
print(info)# 排序前
bubble(info)# 调用冒泡排序算法
print(info)#排序后

运行结果
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季布,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值