下图中的数字是无序的,通过冒泡排序两两比较可产生一个由小到大的顺序列表
理解:相邻元素相互比较大小并进行交换,导致相对于偏小(偏大)的元素不断往某一方向移动。 是一种交换排序,类似相同深度的两个气泡,大的会先浮出水面
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)#排序后
运行结果