--- 冒泡排序 --- 列表每两个相邻的数,如果前面比后面大,则交换这两个数 一趟排序完成后,无序区减少一个数,有序区增加一个数 优化 (实际性能依赖于数据的无序程度。若非常无序,每趟排序都进行判断,反而浪费时间和空间): 如果冒泡排序中的一趟排序没有发生交换 说明列表已经有序,可以直接结束算法
def bubble_sort(li):
# 排序 n-1 趟
for i in range(len(li) - 1):
exchange = False
for j in range(len(li) - i - 1):
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
exchange = True
# 每一趟结束后,检验有没有交换
if not exchange:
return