网站大量收购独家精品文档,联系QQ:2885784924

《算法导论》第7章 快速排序.pptx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

快速排序

快速排序特点

快速排序描述

快速排序伪代码

快速排序执行流程1、从数组中选择一个轴点元素(pivot)假设每次选择最后一个位置的元素为轴点(算法导论上就是这样)2、利用pivot将数组分割成两个子数组将小于pivot的元素放到pivot前面(左侧)将大于pivot的元素放在pivot后面(右侧)等于pivot的元素放哪边都可以(算法导论放在左边)3、对子数组重复进行12步操作直到数组不能再分割(子数组中只剩下一个元素)快速排序的本质:逐渐将每一个元素都转换成轴点元素,直到子数组只剩下一个元素而无法转换

快速排序最坏情况

快速排序最好情况

快速排序平均情况

快速排序递归树

快速排序总体分析如果数据已经排好序或者已经逆序的话,原始的快排算法效率不高。一边拥有剩下的所有元素,另外一边没有元素,时间复杂度为O(n2)。快速排序在最坏情况下不比插入排序快,但快速排序的平均情况效率是很高的。快排的最好情况是划分在数组中央,时间复杂度为O(nlgn)。分析划分在1/10和9/10的地方,时间复杂度也是O(nlgn),只是递归树下降慢一点。分析一次幸运,一次不幸运的情况,时间复杂度也是O(nlgn),只是递归树下降慢一点。

快速排序最坏输入假如你和你的竞争对手同时提供程序给你们的客户,而客户让你们用相互的输入来比较程序的效率,你看到你的竞争对手用的是快速排序,你可以用排好序的输入让你的竞争对手程序变慢,他也同样可以这样对你,此时有什么办法可以避免你的竞争对手用特定的输入来击败你?

快速排序随机化优化

快速排序三数取中值法优化最佳的划分是将待排序的序列分成等长的子序列,最佳的状态我们可以使用序列的中间的值,也就是第N/2个数。可是,这很难算出来,并且会明显减慢快速排序的速度。这样的中值的估计可以通过随机选取三个元素并用它们的中值作为轴点而得到。事实上,随机性并没有多大的帮助,因此一般的做法是使用左端、右端和中心位置上的三个元素的中值作为轴点。显然使用三数中值分割法消除了预排序输入的不好情形。例如待排序序列为:8149635270左边为:8,右边为0,中间为6。我们这里取三个数比较,取中间数作为轴点,则轴点为6。

谢谢!

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档