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个数据的排序工作。