冒泡排序

def bubble_sort(arr):
    """冒泡排序,arr是列表"""
    # 列表长度
    n = len(arr)
    if n <= 1:
        return
    for i in range(n):
        # 提前退出标志位
        flag = False
        for j in range(n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]  # 交换
                flag = True  # 此次冒泡有数据交换
        if not flag:
            break


if __name__ == "__main__":
    nums = [4, 3, 5, 6, 9, 12, 7, 1, 2, 10, 11]

    print("排序之前:", nums)
    bubble_sort(nums)
    print("排序之后:", nums)
结果:

排序之前: [4, 3, 5, 6, 9, 12, 7, 1, 2, 10, 11]
排序之后: [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12]

原理:

  冒泡排序只会操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。

  如果不满足就让他两交换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成n个数据的排序工作。

原文地址:https://www.cnblogs.com/wutongluo/p/13155513.html