冒泡排序是所有排序算法中最简单、最易实现的算法。实现思路是:比较相邻两个元素的值,如果后者比前者的值小就交换它们的位置;一趟排序完成后,则无序区减少一个数,有序区增加一个数。时间复杂度为O(n^2)。

代码示例

def bubble_sort(lst):
    for i in range(len(lst) - 1):
        for j in range(len(lst) - i - 1):
            if lst[j] > lst[j + 1]:
                lst[j], lst[j + 1] = lst[j + 1], lst[j]
        # print(lst)

lst = [4, 3, 1, 6, 5, 2]
# print(lst)
bubble_sort(lst)

代码优化

优化思路:如果没有需要交换的元素,则循环结束。如果本来就是排好序的,则只需要走一趟循环。

def bubble_sort(lst):
    for i in range(len(lst) - 1):
        flag = False
        for j in range(len(lst) - i - 1):
            if lst[j] > lst[j + 1]:
                lst[j], lst[j + 1] = lst[j + 1], lst[j]
                flag = True
        if not flag:
            break

lst = [1, 2, 3, 4, 5, 6]
bubble_sort(lst)
print(lst)

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/208