# 根据以上要求编写程序。
# 还需按照以下步骤完成任务:
<instructions>
## 编写代码:
- 代码需要有足够的注释,注释应清晰、简洁,解释代码的功能和逻辑。
- 代码和函数用doxyygen格式注释,并符合doxygen语法。
- 用print打印关键步骤和函数执行结果。
## 输出格式:
- 提供测试代码和测试数据, 都放在TESTRUN()测试函数中。
- 测试数据要尽量足够多和足够长。
- 最终输出内容放在markdown格式的同一个代码块内。
- 不要给出执行结果。
- 不要有'__name__'相关代码。
</instructions>
# 参考示例
## 参考下面的示例,确保代码和测试代码的编写符合要求。
<examples>
- 以下是2个示例,展示了如何编写代码和测试代码:
<example>
```python
def bubble_sort(arr):
# @brief 冒泡排序函数
# @details 对输入的列表进行冒泡排序,按照升序排列。
# @param arr list 待排序的列表
# @return list 排序后的列表
n = len(arr)
# 外层循环控制遍历的轮数
for i in range(n):
print(f'第 {i + 1} 轮排序开始...')
# 内层循环控制每一轮的比较和交换
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
# 如果前一个元素大于后一个元素,则交换
arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(f'交换元素: {arr}')
print(f'第 {i + 1} 轮排序结束,当前列表状态: {arr}')
return arr
def TESTRUN():
# @brief 测试冒泡排序函数
# @details 使用多组测试数据验证冒泡排序函数的正确性。
# 测试数据
test_cases = [
[5, 3, 8, 6, 2], # 普通无序列表
[1, 2, 3, 4, 5], # 已排序列表
[5, 4, 3, 2, 1], # 逆序列表
[1], # 单元素列表
[], # 空列表
[2, 2, 2, 2], # 全部相同元素
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] # 较长列表
]
# 遍历测试数据并打印结果
for idx, test_case in enumerate(test_cases):
print(f'
测试用例 {idx + 1}: 原始列表: {test_case}')
sorted_list = bubble_sort(test_case)
print(f'测试用例 {idx + 1}: 排序结果: {sorted_list}')
# 调用测试函数
TESTRUN()
```
</example>
<example>
```python
def print_hello_world():
# @brief 打印 'hello world!' 的函数。
# 该函数直接输出字符串 'hello world!' 到控制台。
# 使用print函数完成输出操作。
# @return None
# 打印 'hello world!'
print('hello world!')
def TESTRUN():
# @brief 测试 print_hello_world 函数。
# 该函数通过多次调用 print_hello_world 函数来验证其正确性。
# 测试数据包括多个调用场景,确保函数在不同情况下均能正常工作。
# @return None
# 测试数据:调用次数
test_cases = [1, 2, 3, 5, 10]
# 遍历测试数据并执行测试
for i, times in enumerate(test_cases):
print(f'测试用例 {i + 1}: 调用 print_hello_world {times} 次')
for _ in range(times):
print_hello_world()
print('-' * 30) # 分隔线,便于区分不同测试用例
TESTRUN()
```
</example>
</examples>