算法学习笔记五一快速排序
什么是快速排序
快速排序(Quicksort)是一种常用的排序算法,它的基本思想是通过分治的策略将一个大问题划分为多个小问题来解决。它的平均时间复杂度为O(nlogn),最坏情况(有序情况)为O(n^2)。是一种高效的排序算法。
算法思想
- 选择一个基准元素(pivot),可以是数组中的任意一个元素。通常情况下,可以选择第一个元素、最后一个元素或者随机选择。
- 将数组划分为两个子数组:小于等于基准元素的元素放在基准元素的左边,大于基准元素的元素放在右边。这个过程称为分区(partition)操作。
- 对两个子数组分别递归地应用快速排序算法,直到子数组的大小为0或1,此时子数组已经有序。
- 合并排序后的子数组,即得到最终的排序结果。
示例代码
def partition(list, left, right):
temp = list[left]
while left < right:
while list[right] > temp and left < right: # 先遍历mid右边的数组,找到一个比temp小的数
right -= 1
list[left] = list[right]
while list[left] < temp and left < right: # 再遍历mid左边的数组,找到一个比temp大的数
left += 1
list[right] = list[left]
list[left] = temp
return left # 结束循环时,left=right
def quick_sort(list, left, right):
if left < right:
mid = partition(list, left, right)
quick_sort(list, left, mid - 1)
quick_sort(list, mid + 1, right)
下面介绍一种python实现比较方便的写法:
def quick_sort(list):
if len(list) <= 1: # 当递归的数组只有一个时
return list
else:
pivot = list[0]
less = [x for x in list[1:] if x <= pivot]
greater = [x for x in list[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义