# quick_sort 代码实现
# TODO:原地修改
def partition(arr, left, right):
pivot = arr[left] # 定义一个基准,取当前列表的第一个元素为基准,将这个pivot和其他元素比较
idx = left # idx 其实是在记录当前列表下,有(idx - left)个元素小于pivot,
for i in range(left+1, right+1): # 遍历当前列表
if arr[i] <= pivot: # 一旦发现元素小于pivot, idx+=1, 并且将二者位置互换
idx += 1
arr[idx], arr[i] = arr[i], arr[idx]
arr[left], arr[idx] = arr[idx], arr[left]
return idx
def quick_sort_utils(arr, left, right):
if right <= left: # 确认递归函数的终止条件
return
sep = partition(arr, left, right)
quick_sort_utils(arr, left, sep-1)
quick_sort_utils(arr, sep+1, right)
def quick_sort(arr):
quick_sort_utils(arr, 0, len(arr)-1)
# 测试数据
if __name__ == '__main__':
import random
random.seed(1)
arr = [random.randint(0, 100) for _ in range(10)]
print("原始数据:", arr)
quick_sort(arr)
print("快速排序结果:", arr)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架