基础练习——冒泡排序

原理很简单,相邻两两比较,左大右小就换一下,双循环,每一轮会有个最大的冒到最后,这个最后的不参加下一轮的比较。如果某一轮都没冒泡,就结束。

def bubble_sort(lst):
    length = len(lst)
    if length <= 1:
        return lst

    for i in range(0, length - 1):
        bubbled = False
        for j in range(0, length - 1 - i):                  # 每一轮会有一个最大的冒到最后,循环规模减1
            if lst[j] > lst[j + 1]:                         # 相邻的,左大右小就交换
                lst[j], lst[j + 1] = lst[j + 1], lst[j]
                bubbled = True
        if not bubbled:                                     # 一轮没有交换,说明相邻的都是左小右大,完成!
            break

    return lst

还是O(n²)

你可能感兴趣的:(基础练习——冒泡排序)