【4】快排及随机化算法

本文详细介绍了快速排序算法,包括其分治思想、基本步骤和不同情况下的时间复杂度分析。此外,还探讨了随机化快速排序,强调了其在实际应用中的优势和性能表现,指出其在平均情况下的高效性。
摘要由CSDN通过智能技术生成

快排(Quicksort)

  • 分治算法
  • 原地排序(就在原来的数据区域内进行重排,像插入排序,在原来的区域完成排序,归并排序额外的空间进行排序)

分治

  • 分,快速排序将数据划分为几份,所以快排通过选取一个关键数据,再根据它的大小把原数据分为两个子数组(第一个数组的元素都比这个主元素小,第一个数组的元素都比这个主元素大或相等)
  • 治,用递归处理两个子数组的排序
  • 合并,连接

在这里插入图片描述

( A , p , q ) (A,p,q) (A,p,q)

定义 ( A , p , q ) (A,p,q) (A,p,q)算法,表示从元素p到元素q的快速排序,输出结果为将小于主元素(位置p的元素)排在主元素之前,将大于等于主元素(位置p的元素)排在主元素之后。
在这里插入图片描述

( A , p , q ) (A,p,q) (A,p,q)例子

在这里插入图片描述

Pseudocode for quicksort

在这里插入图片描述

快排分析

  • 假设元素都不相同
  • 当有重复元素的时候也可以运行,但有更好的算法
  • 最坏情况分析
    • 每次主元素都是大于或者小于其他元素, T ( n ) = T ( 0 ) + T ( n − 1 ) + Θ ( n ) = Θ ( 1 ) + T ( n − 1 ) + Θ ( n ) = T ( n − 1 ) + Θ ( n ) = Θ ( n 2 ) T(n)=T(0)+T(n-1)+\Theta(n)=\Theta(1)+T(n-1)+\Theta(n)=T(n-1)+\Theta(n)=\Theta(n^2) T(n)=T(0)+T(n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值