快速排序(使用Python描述)
描述
归并排序和快速排序都是使用分而治之的思维.归并排序侧重点是最终结果的合并.快速排序的重点则是放在了子问题的分解上面.
代码一
def quick_sort(arr):
len_arr = len(arr)
if len_arr<2:
return arr
middle_value = arr[len_arr//2]
arr.remove(middle_value)
left,right = [],[]
for item in arr:
if item < middle_value:
left.append(item)
else:
right.append(item)
print(left,right)
return quick_sort(left) + [middle_value] + quick_sort(right)
arr = [6,15,8,7]
#print(quick_sort(arr))
代码二
def quick_sort_for_book(arr,left,right):
if left<right:
q = partition(arr,left,right)
# 使用了两次递归比较难以理解.
quick_sort_for_book(arr,left,q-1)
quick_sort_for_book(arr,q+1,right)
def partition(arr,left,right): # 数组划分
x = arr[right]
i = left -1
for j in range(left,right):
if arr[j] <=x:
i+=1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[right] = arr[right],arr[i+1]
return i + 1
arr1 = [8,6,15,14,13]
quick_sort_for_book(arr1,0,len(arr1)-1)
print(arr1)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络