python 实现冒泡排序 --最优

"""
冒泡排序:由小到大依次排序
"""
import random

# 设定随机熵池 防止每次执行随机数不一致,不利于对比时间复杂度
random.seed(1100)
# 设置待排序列表的长度
num = 100
# 设定列表中内容的起始值
start_num = 100
lst1 = [random.randint(start_num, start_num + 2 * num) for _ in range(num)]
# 打印未排序列表
print(lst1)
# 方式一:n个元素需要比较n-1趟
n = 0  # 比较趟数
exchange = True  # 冒泡优化,杜绝  5 6 7 9 8 这种只需要比较一趟的数据也冒泡n-1趟
count = 0  # 交换计数,无实际意义,只是为了比较
while n < len(lst1) and exchange:    # 冒泡趟数
	n += 1
	exchange = False
	for i in range(len(lst1) - n):   # 每一趟中元素遍历
		count += 1
		if lst1[i] > lst1[i + 1]:    # 交换
			exchange = True
			lst1[i], lst1[i + 1] = lst1[i + 1], lst1[i]
print(lst1)
print(count)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值