版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析(fēnxī)快速排序第一页,共28页。第六章快速(kuàisù)排序快速排序算法快速排序的随机化版本程序演示及说明(shuōmíng)算法性能分析(三种情况)第二页,共28页。问题(wèntí):1、什么是分治(fēnzhì)法?2、什么是排序?3、用分治(fēnzhì)法解决排序问题的思想是什么?第三页,共28页。1.算法的提出:由提出。2.定义(dìngyì):快速排序(quicksort)又称分划交换排序。一、快速(kuàisù)排序算法的基本概念第四页,共28页。3.其解决(jiějué)排序问题的基本思路:使用分治法。基本步骤:a.分解:数组A[p..r]被划分为两个非空子数组A[p..q]和A[q+1..r],使得A[p..q]的每一个元素都小于等于A[q+1..r]的元素。b.解决(jiějué):通过递归调用快速排序对子数组A[p..q]和A[q+1..r]进行排序。c.合并:快速排序无需合并操作。第五页,共28页。快速排序(páixù)算法:QUICKSORT(A,p,r)1ifp<r2thenqPARTITION(A,p,r)3QUICKSORT(A,p,q)4QUICKSORT(A,q+1,r)算法(suànfǎ)描述第六页,共28页。二、快速排序的分解(fēnjiě)、解决过程1.分解:调用PARTITION对数组A[p..r]进行划分。分解方法(fāngfǎ):在待排序的数组A[p..r]中选择一个元素作为分划元素,也称为主元(最简单的做法是选择数组的第一个元素为主元)。经过一趟划分操作将数组重新排列,将小于主元的元素放在原数组的底部区域,把大于主元的元素放在原数组的顶部区域。示意图:主元PARTITION75641233底部区域(qūyù)顶部区域73146235第七页,共28页。2.解决:通过递归调用快速排序对子数组A[p..q]和A[q+1..r]排序,直到划分得到的子数组中只有一个元素时,递归调用结束(jiéshù)。3.合并:快速排序经过一趟划分操作将数组分解成两个子数组,且位于底部区域的元素均不大于主元,位于顶部区域的元素均不小于主元,所以,一旦两个子数组已经完成分别排序,整个数组自然成为有序序列。第八页,共28页。PARTITION实例(shílì):ijiijjijji(a)(b)(c)(d)(e)A[p..r]A[p..q]A[q+1..r]一次划分(huàfēn)结束主元return7314623573146235751462337514623375641233第九页,共28页。PARTITION(A,p,r)1xA[p]2ip-13jr+14whileTRUE//三次循环(xúnhuán)就把前一个数组搞定了5dorepeatjj-16untilA[j]≤x//后面小于主元7repeatii+18untilA[i]≥x//前面的大于主元9ifi<j10thenexchangeA[i]A[j]11elsereturnj第十页,共28页。划分(huàfēn)的正确性a.下标i和j不会指向数组A中区间[p..r]以外(yǐwài)的元素。b.当PARTITION结束时,下标j不等于r。c.当PARTITION结束时,A[p..j]中的每个元素都小于等于A[j+1..r]中的每个元素。第十一页,共28页。性能(xìngnéng)分析最坏情况(qíngkuàng)划分:T(n)=T(n-1)+(n)第十二页,共28页。最佳(zuìjiā)情况划分:T(n)=2T(n/2)+(n)=(nlgn)第十三页,共28页。常数比例(bǐlì)划分:T(n)=T(an)+T((1-a)n)+(n)=(nlgn)第十四页,共28页。平均情况划分(huàfēn):直觉:(nlgn)差的划分(huàfēn)可以吸收到好的划分(huàfēn)中。第十五页,共28页。三、快速(kuàisù)排序的随机化版本1.随机化版本的提出2.在快速排序中使用随机选择策略在快速排序算法的每一步中,当数组还没有被划分时,可将元素A[p]与A[p..r]中随机选出的一个元素交换(jiāohuàn)后再执行PARTITION。3.使用随机化版本的优点第十六页,共28页。随机化版本(bǎnběn)的算法RANDOMIZED-PARTITION1iRANDOM(p,r)2exchangeA[p]A[i]3returnPARTITION(p,q,r)RANDOMIZED-QUICKSORT(A,p,r)1ifp<r2thenqRANDOMIZED-PARTITION(A,p,r)3RANDOMIZED-QUICKSORT(A,p,q)4RANDOMIZED-QUICKSORT(A,q+1,r)第十七页,共28页。四、快速(kuàisù)排序分析(n-1)²=
n²-2(n-1)最坏情况(qíngkuàng)分析第十八页,共28页。第十九页,共28页。平均情况分析两个假设: (1)假设所有输入数据(shùjù)均不同; (2)假定每个排列出现是等概率的;第二十页,共28页。关于划分过程的分析关于平均情况性态的一个(yīɡè)递归式解递归式上述和式的紧确界第二十一页,共28页。关于划分过程(guòchéng)的分析第二十二页,共28页。第二十三页,共28页。(2)假定每个排列出现是等概率的;T(n)=T(n-1)+(n)三、快速(kuàisù)排序的随机化版本7repeatii+1第二十三页,共28页。r]中随机选出的一个元素交换(jiāohuàn)后再执行PARTITION。当PARTITION结束时,下标j不等于r。5dorepeatjj-1(1)假设所有输入数据(shùjù)均不同;解决:通过递归调用快速排序对子数组A[p.T(n)=T(n-1)+(n)PARTITION实例(shílì):分解方法(fāngfǎ):在待排序的数组A[p.差的划分(huàfēn)可以吸收到好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议书的样本范本2024年
- 个人贷款委托协议范本
- 重症肌无力护理查房
- 房屋抵债协商书
- 物业广告位租赁协议
- 房屋建设合同大全
- 2024年柴油危险品运输合同
- 2024年食堂转让协议书
- 2024年双方债权债务转让协议书
- 宾馆转手合同样本
- SOP京东商家入驻合同
- 水系统中央空调工程材料清单
- 小学六年级数学上册口算题300道(全)
- 《干粉灭火器检查卡》
- 校园监控值班记录表(共2页)
- 试桩施工方案 (完整版)
- 走中国工业化道路的思想及成就
- ESTIC-AU40使用说明书(中文100版)(共138页)
- Prolog语言(耐心看完-你就入门了)
- 保霸线外加电流深井阳极地床阴极保护工程施工方案
- 蓝色商务大气感恩同行集团公司20周年庆典PPT模板
评论
0/150
提交评论