Files
itcast01/a.py

55 lines
1.6 KiB
Python

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()