1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def bubble_sort(arr):"""对列表进行冒泡排序(原地排序,升序)参数:arr (list): 待排序的列表返回:list: 排序后的原列表(原地修改)"""n = len(arr)# 外层循环控制需要比较的轮数for i in range(n - 1):# 标记本轮是否发生交换,若无交换则列表已有序swapped = False# 内层循环进行相邻元素的比较和交换# 每完成一轮,最大的元素会“浮”到最后,因此比较范围逐轮缩小for j in range(n - 1 - i):if arr[j] > arr[j + 1]:# 交换相邻元素arr[j], arr[j + 1] = arr[j + 1], arr[j]swapped = True# 如果本轮没有交换发生,说明列表已有序,提前退出if not swapped:breakreturn arr# 测试示例if __name__ == "__main__":test_list = [64, 34, 25, 12, 22, 11, 90]print("原列表:", test_list)bubble_sort(test_list)print("排序后:", test_list)# 边界测试print("\n边界测试:")print(bubble_sort([])) # []print(bubble_sort([1])) # [1]print(bubble_sort([2, 1])) # [1, 2]