算法基础期末考点总结七——快速排序

快速排序

算法体现分治法的部分:
在这里插入图片描述
核心部分:
在这里插入图片描述
用我自己的语言来说,PARTITON算法,将A[r]作为主元,在对数组扫描时,遇到比主元小的,就将其放到前面。(如果你要复述伪代码,在确定i,j的初始值的时候,建议拿个实例先试一试)

用循环不变式表示即为:
在这里插入图片描述

快速排序的另一种形式

快速排序,在第二版书里,算法的形式不像第三版这样,而是如下
在这里插入图片描述
在这里插入图片描述
(第10行A[j]应该改为A[i])
思想是任取一个主元(算法里取的是第一个元素),假设前半部分都得存小于它的,后半部分都得存大于它的,从两头开始向中间扫描,遇到不符合的,两两调换;直到扫描到同一个元素,那么这个元素就放到了排好序该在的位置。

快速排序的random形式

因为主元永远是最后一个元素,使得某些情况下,算法时间极其长,所以为了平摊给各种情况,在划分前,对主元做一次变换。
在这里插入图片描述
但想一想也知道,就连老师也说,这对时间复杂度没有任何的改进。

快速排序时间复杂度

最坏情况:当数组已经排好序了,O(n^2)
期望时间:O(nlgn)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值