- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 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)