打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速排序(Python实现)

一、 算法介绍
快速排序是经常考查到的排序算法,这里对快排算法做一下总结。快速排序是“交换”类的排序,它通过多次划分操作实现排序!以升序为例,其执行流程可以概括为:每一趟排序选择当前所有子序列的一个关键字(通常是第一个)作为枢轴量,将子序列中比枢轴量小的移到枢轴前边,比枢轴大的移到枢轴后边,具体过程是一个交替扫描和交换的过程。当本趟所有子序列都被枢轴以上述规则划分完毕后会得到新的一组更短的子序列,它们会成为下一趟划分的初始序列集。
二、演示流程



三、 Python代码实现

def quick_sort(nums: list, left: int, right: int) -> None:	if left < right:		i = left		j = right		# 取第一个元素为枢轴量		pivot = nums[left]		while i != j:			# 交替扫描和交换			# 从右往左找到第一个比枢轴量小的元素,交换位置			while j > i and nums[j] > pivot:				j -= 1			if j > i:				# 如果找到了,进行元素交换				nums[i] = nums[j]				i += 1			# 从左往右找到第一个比枢轴量大的元素,交换位置			while i < j and nums[i] < pivot:				i += 1			if i < j:				nums[j] = nums[i]				j -= 1		# 至此完成一趟快速排序,枢轴量的位置已经确定好了,就在i位置上(i和j)值相等		nums[i] = pivot		# 以i为枢轴进行子序列元素交换		quick_sort(nums, left, i-1)		quick_sort(nums, i+1, right)		# 测试代码import randomdata = [random.randint(-100, 100) for _ in range(10)]quick_sort(data, 0, len(data) - 1)print(data)

四、性能分析

  1. 时间复杂度分析
    快速排序最好情况下的时间复杂度为O(nlog2n),待排序列越接近无序,本算法效率越高,最坏情况下时间复杂度为O(n2)(序列已经有序的状态),待排序列越接近有序,本算法效率越低,平均时间复杂度为O(nlog2n)。快速排序的排序趟数和初始序列有关!

有多个时间复杂度为O(nlog2n)的排序算法,但这里称之为快速排序算法而不是其他排序,是因为其他排序算法的基本操作执行次数的多项式最高项为X*nlog2,X为系数,快速排序的X最小,可见它在最高级别的算法中是最好的,故叫快速排序。

  1. 空间复杂度分析
    空间复杂度为O(log2n),快速排序是递归进行的,需要栈的辅助!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据结构-各类排序算法总结
基于python的七种经典排序算法
Go 数据结构和算法篇(八):快速排序
Python中几种常见的排序算法?
常用排序算法比较与分析
数据结构排序算法总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服