代码清单1-2 小Q修改后的冒泡排序函数
# coding=utf-8
# def magic_bubble_sort(numbers):
# num = len(numbers)
# for j in range(num - 1):
# print('j===', j)
# for i in range(num - j - 1):
# print('i', i)
# if numbers[i] > numbers[i + 1]:
# numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]
# print(numbers[i], numbers[i + 1])
# return numbers
def magic_bubble_sort(numbers):
"""有魔力的冒泡排序算法,默认所有的偶数都比奇数大
:param numbers: 需要排序的列表,函数会直接修改原始列表
"""
stop_position = len(numbers) - 1
while stop_position > 0:
for i in range(stop_position):
current, next_ = numbers[i], numbers[i + 1]
current_is_even, next_is_even = current % 2 == 0, next_ % 2 == 0
should_swap = False
# 交换位置的两个条件:
# - 前面是偶数,后面是奇数
# - 前面和后面同为奇数或者偶数,但是前面比后面大
if current_is_even and not next_is_even:
should_swap = True
elif current_is_even == next_is_even and current > next_:
should_swap = True
if should_swap:
numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]
stop_position -= 1
return numbers
if __name__ == '__main__':
numbers = [23, 32, 1, 3, 4, 19, 20, 2, 4]
print(magic_bubble_sort(numbers))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端