“”"
冒泡排序处理数据原本有序
“”"
li = [11,22,44,88,66,55,33]
def maopao(li):
n = len(li)
# 遍历列表长度减1次,最后一个不需要比较
for i in range(1, n):
# 创建一个变量flag,用来记录本轮冒泡,是否有数据交换位置
flag= False
# 每次遍历都获取一个元素,依次和后面的元素进行比较
for j in range(n - i):
# 判断前元素,和后一个元素的值,如果前者大于后者,则交换位置
if li[j] > li[j + 1]:
# 交换当前元素和后一个元素的值
li[j], li[j + 1] = li[j + 1], li[j]
# 发生了数据交换位置,则修改flag的值,表示发生了数据交换,数据不是有序的
flag= True
# 每一轮冒泡结束之后,判断当前flag是否为Flase,
# 如果为Flase,则说明上一轮冒泡没有修改数据的顺序,说明数据是有序的,不需要继续冒泡了
if not flag:
# 顺序没有变更,数据已经是有序的了,终止冒泡
return li
return li
maopao(li)