四川大学计算机软件技术基础课件 排序.pptVIP

四川大学计算机软件技术基础课件 排序.ppt

  1. 1、本文档共74页,可阅读全部内容。
  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 25 49 25* 16 08 21 25 49 25* 16 08 i = 5 21 25 49 25* 16 08 i = 6 i = 4 25* 16 08 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 计算机软件技术基础 查找与排序 16 49 16 16 21 25 49 25* 16 08 1 2 3 4 5 6 21 25 49 25* 08 i = 4 时的排序过程 21 25 49 25* 完成 16 08 16 i = 5 j = 4 i = 5 j = 3 0 1 2 3 4 5 6 0 1 2 3 4 5 6 计算机软件技术基础 查找与排序 25 25* 16 16 21 25 49 25* 08 21 49 25* 08 21 25 49 25* 16 08 16 16 25 21 i = 5 j = 2 i = 5 j = 1 i = 5 j = 0 16 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 计算机软件技术基础 查找与排序 三、插入排序 2)函数实现 void straightInsert(RECORDNODE r[],int n){ /*使用直接插入排序法对数组a(1:n)排序*/ for (i=2;i=n;i++){ a[0]=a[i]; /*设置监视哨*/ j=i-1; while (a[0].keya[j].key){ a[j+1]=a[j]; j--; } a[j+1]=a[0]; } } 计算机软件技术基础 查找与排序 三、插入排序 3) 算法分析 设待排序对象个数为n, 则该算法的while循环执行n-1趟。 关键码比较次数和对象移动次数与对象关键码的初始排列有关。 最好情况下, 排序前对象已按关键码从小到大有序, 每趟只需与前面有序对象序列的最后一个对象比较1次, 移动2次对象, 总的关键码比较次数为 n-1, 对象移动次数为 2(n-1)。 最坏情况下, 第 i 趟时第 i 个对象必须与前面 i 个对象都做关键码比较, 并且每做1次比较就要做1次数据移动。则总关键码比较次数KCN和对象移动次数RMN分别为 计算机软件技术基础 查找与排序 三、插入排序 在平均情况下的排序码比较次数和对象移动次数约为 n2/4。因此,直接插入排序的时间复杂度为 o(n2)。 直接插入排序是一种稳定的排序方法。 计算机软件技术基础 查找与排序 三、插入排序 2. 折半插入排序 1)与直接插入排序相比,除了采用的是折半查找寻找插入的位置外,其它类似。 2)算法 void BinarySort(RECORDNODE a[],int n){ for (i=2;i=n;i++){ a[0]=a[i]; low=1; high=i-1; while (lowhigh){ mid=(low+high)/2; if (a[0].keyr[mid].key) high=mid-1; else low=mid+1; } for (j=i-1;j=low;j--) r[j+1]=r[j]; r[low]=r[0]; } } 计算机软件技术基础 查找与排序 三、插入排序 3) 算法分析 折半查找比顺序查找查找快, 所以折半插入排序就平均性能来说比直接插入排序要快。 它所需的关键码比较次数与待排序对象序列的初始排列无关, 仅依赖于对象个数。在插入第 i 个对象时, 需要经过 ?log2i? +1 次关键码比较, 才能确定它应插入的位置。因此, 将 n 个对象(为推导方便, 设为 n=2k )用折半插入排序所进行的排序码比较次数为: 其记录移动的数目与直接插入排序相同 因此,此算法的时间复杂度为O(n2) 折半插入排序是一个稳定的排序算法 计算

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档