快速排序算法.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Part 3快速排序算法 算法简介排序演示演示代码性能分析快速排序 算法简介快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 4321 递增i令a[3]=a[2],a[2]=k;完成第一次比较: i 0 1 2 3 4 5 a[i] 3 2 6 7 8 9i=2 j=3 k=6创建变量i=0,j=5, k=6。 令a[0]=a[3],a[3]=k;递减J;完成第一次比较: i 0 1 2 3 4 5 a[i] 3 2 7 6 8 9此时:i=0 j=3 k=6再次递减j 发现j=i对k两边的数据,再分组分别进行上述的过程,直到不能再分组为止。假设用户输入了如下数组: i 1 2 3 4 5 6 a[i] 6 2 7 3 8 9 演示代码#include iostream using namespace std; void Qsort(int a[], int low, int high){ if(low = high) { return; } int first = low; int last = high; int key = a[first];/*用字表的第一个记录作为枢轴*/ while(first last) { while(first last a[last] = key) { --last; } a[first] = a[last];/*将比第一个小的移到低端*/ while(first last a[first] = key) { ++first; } a[last] = a[first]; /*将比第一个大的移到高端*/ } a[first] = key;/*枢轴记录到位*/ Qsort(a, low, first-1); Qsort(a, first+1, high);}int main(){ int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24}; Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*这里原文第三个参数要减1否则内存越界*/ for(int i = 0; i sizeof(a) / sizeof(a[0]); i++) { cout a[i] ,; } return 0; 最好情况最坏情况平均情况性能分析最坏情况T(n)=θ(n2)最好情况T(n)=θ(nlogn)平均情况T(n)=θ(nlogn)

文档评论(0)

展翅高飞2020 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档