优化过的冒泡排序(搅拌排序)也称鸡尾酒排序:
def bubble_sort(alist, comp=None):
"""优化过的冒泡排序(搅拌排序)"""
for i in range(len(alist) - 1):
swapped = False
for j in range(len(alist) - 1 - i):
comp_result = comp(alist[j], alist[j + 1]) > 0 if comp else alist[j] > alist[j + 1]
if comp_result:
alist[j], alist[j + 1] = alist[j + 1], alist[j]
swapped = True
if swapped:
swapped = False
for j in range(len(alist) - 2 - i, 0, -1):
comp_result = comp(alist[j], alist[j - 1]) < 0 if comp else alist[j] < alist[j - 1]
if comp_result:
alist[j], alist[j - 1] = alist[j - 1], alist[j]
swapped = True
if not swapped:
break
- comp:一个规定排序规则的函数