排序时间复杂度 & 快速排序 改进快排的方法

本文讨论了排序算法的时间复杂度,重点分析了快速排序在最坏情况下的O(N^2)时间复杂度,并提出了三种改进策略:1) 选取随机数作为枢轴,2) 使用三数取中值法,3) 选取中位数作为枢轴。通过随机化选择枢轴,可以降低快速排序在已排序数组上的最坏情况,提高平均性能至O(logN)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

  • 1、冒泡排序是一种用时间换空间的排序方法,n小时好
    2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级
    3、最好的情况是数据本来就有序,复杂度为O(n)

  • 1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。
    2、划分之后一边是一个,一边是n-1个,
    这种极端情况的时间复杂度就是O(N^2)
    3、最好的情况是每次都能均匀的划分序列,O(N*log2N)

  • 1、n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。

https://www.cnblogs.com/fengff/p/10983733.html

改进:

三种改进方案

改进方案:改进选取枢轴的方法

1、选取随机数作为枢轴。

但是随机数的生成本身是一种代价,根本减少不了算法其余部分的平均运行时间。

2、使用左端,右端和中心的中值做为枢轴元。

经验得知,选取左端,右端,中心元素的中值会减少了快排大约 14%的比较。

3、每次选取数据集中的中位数做枢轴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值