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

第21交换排序.pptVIP

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

排序过程 将第一、第二个记录的关键字进行比较,若r[1].keyr[2].key,则交换;然后比较第二与第三个记录;依次类推,直至第n-1个和第n个记录比较为止——第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上; 对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置; 重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止. void bubble_sort(JD r[], int n) { int m, i, j, flag=1; JD x; m=n-1; while((m0)(flag==1)) { flag=0; ‘最大的移动到位置 m for(j=1;j=m;j++) if(r[j].keyr[j+1].key) { flag=1; x=r[j]; r[j]=r[j+1]; r[j+1]=x; } m--; } } 基本思想: 通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序。 * 2. 交换排序 1. 起泡排序(Bubble Sort) 例 49 38 65 97 76 13 27 30 初始关键字 38 49 65 76 13 27 30 97 第一趟 38 49 65 13 27 30 76 第二趟 38 49 13 27 30 65 第三趟 38 13 27 30 49 第四趟 13 27 30 38 第五趟 38 49 76 97 13 97 27 97 30 97 13 76 76 76 27 30 13 65 27 65 30 65 13 13 49 49 30 49 27 38 27 38 30 38 1 2 3 4 5 6 7 8 算法描述 结束标志: 一趟排序中没有过交换记录的操作,flag=0; 或 m=0; T(n)=O(n2) 最坏情况(逆序) 比较次数: 移动次数: 98,67,34, 11, 9, 6, 4, 1 时间复杂度 1, 4, 6, 9, 11, 34,67,98 最好情况(正序) 比较次数: n-1 移动次数: 0 2. 快速排序 对r[s……t]中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=r[s],x=rp.key 初始时令i=s , j=t; 首先从 j 所指位置向前搜索第一个关键字小于x的记录,并和rp交换; 再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换; 重复上述两步,直至i==j为止; 再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止。 排序过程 例 初始关键字 49 38 65 97 76 13 27 50 i j j i 完成一趟排序: ( 27 38 13) 49 (76 97 65 50) 分别进行快速排序: ( 13) 27 (38) 49 (50 65) 76 (97) 快速排序结束: 13 27 38 49 50 65 76 97 49 27 i j i j i j 49 65 j i 13 49 i j 49 97 i j pivotkey 例 初始关键字: 49 38 65 97 76 13 27 50 i j x.key=49 j i 完成一趟排序: ( 27 38 13) 49 (76 97 65 50) 27 i j i j i j 65 j i 13 i j 49 97 i j 在排序过程中,枢轴记录可不用交换,一 趟排序结束后再将枢轴记录移到合适的位置。 void qksort(JD r[], int low,

文档评论(0)

hello118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档