def bubble_sort(arr): """ 冒泡排序算法 参数: arr: 待排序的列表 返回: 排序后的列表 """ n = len(arr) # 遍历所有数组元素 for i in range(n): # 最后i个元素已经排好序 for j in range(0, n - i - 1): # 如果当前元素大于下一个元素,则交换它们 if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr def test_bubble_sort(): """测试冒泡排序算法""" test_cases = [ ([], []), ([1], [1]), ([1, 2, 3], [1, 2, 3]), ([3, 2, 1], [1, 2, 3]), ([64, 34, 25, 12, 22, 11, 90], [11, 12, 22, 25, 34, 64, 90]), ([5, 1, 4, 2, 8], [1, 2, 4, 5, 8]), ([-5, -1, -4, -2, -8], [-8, -5, -4, -2, -1]), ([0, 0, 0, 0], [0, 0, 0, 0]), ([3.2, 1.5, 4.8, 2.1], [1.5, 2.1, 3.2, 4.8]), ] all_passed = True for i, (input_arr, expected) in enumerate(test_cases): # 复制输入数组,避免修改原数组影响后续测试 arr_copy = input_arr.copy() result = bubble_sort(arr_copy) if result == expected: print(f"测试用例 {i + 1} 通过: {input_arr} -> {result}") else: print(f"测试用例 {i + 1} 失败: {input_arr} -> {result}, 期望: {expected}") all_passed = False if all_passed: print("所有测试用例通过!") else: print("部分测试用例失败!") return all_passed if __name__ == "__main__": # 运行测试 test_bubble_sort()