【算法设计-快速排序】随机快速排序算法

本文介绍了快速排序算法的三种划分情况,包括最坏情况、最好情况和平衡划分,并分析了它们的时间复杂度。为了解决部分有序数据导致的效率下降问题,文章提出了使用随机选择方法改进快速排序,通过random_partition函数确保更均匀的划分,从而提高算法性能。最后,提供了C语言的代码实现来展示快速排序的过程。
摘要由CSDN通过智能技术生成

1.算法流程:

快速排序的时间复杂性分析:

1.最坏情况划分:当划分产生的两个子问题分别包含了n-1个元素和0个元素时,快速排序是最坏情况,假如每次递归调用,总是出现最不平衡划分,这是最不平衡划分。划分操作时间复杂度为Θ(n),则算法运行时间的递归表达式为T(n)=T(n-1)+T(0)+Θ(n).利用代入法可以求得T(n)=Θ(n^2).可以证明当数组完全有序时候,时间复杂度为Θ(n^2)

2.最好情况划分:当partition得到的两个子问题规模都不大于n/2时候,是最平衡划分。则递归式为T(n)=2T(n/2)+Θ(n).根据主定理,可得时间复杂度为Θ(nlgn)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值