快速排序python
快速排序(Quick Sort)分为两部分:归位,递归。
归位:在每一轮挑选一个 数,将数列分成两部分,比它大的 数 移动到数列 右边,比它小的 数 移动到数列的 左边
递归:然后这个数的右边部分和左边部分重复上个过程,一直递归到所有数都排好序。
代码实现
# 归位函数
def partition(li, left, right): tmp = li[left] # 取第一个位置数并存起来 while left < right: while left < right and li[right] > tmp: # 从右边遍历,若右边数比较大 right -= 1 # 则指针向左移动 li[left] = li[right] # 若遍历到的数比tmp小,则放到左边位置 while left < right and li[left] < tmp: # 从左边遍历,若左边数比较小 left += 1 # 则指针向右移动 li[right] = li[left] # 若遍历到的数比tmp大,则放到右边位置 li[left] = tmp # 将一开始存起来的数写回来 return left # 返回下标
# 递归
def quick_sort(li, left, right): if left < right: mid = partition(li, left, right) quick_sort(li, left, mid-1) quick_sort(li, mid+1, right)
# 例子:
li = [9,2,7,8,3,4,1,6,5]
quick_sort(li,0,len(li)-1)
print(li)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」