ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

外部排序

2022-09-10 14:31:58  阅读:193  来源: 互联网

标签:归并 外部 读写 时间 磁盘 排序 减少


外部排序步骤分为三步:

  1. 首先先内部排序
  2. 然后再不断地进行归并排序

所以外部排序时间 = 内部排序时间 + 磁盘读写时间 + 内部归并排序所需要的时间

减少磁盘读写时间

一趟磁盘读写时间最消耗时间,所以要减少磁盘读写的趟数,所以引入了多路平衡归并,这样可以减少磁盘读写的趟数。

所谓平衡归并,我自己的话来讲就是尽可能多的进行归并。对m个初始段进行k-路平衡归并所需要的趟数为 \(\lceil log_km \rceil\) 。

但是减少磁盘趟数会带来负面影响:

  1. 会使内部排序时间增多,因为引入了多路平衡归并。
  2. 由于有多个归并段,会使内存消耗变大。
  3. 内部归并排序所需要的时间会增多。

减少磁盘读写时间后产生的负面影响

为了减少第一个负面影响,引入“置换选择排序”。

为了减少第三个负面影响,引入“败者树”。

败者树(Tree of loser)

就是类似于两两比武最后决斗得出冠军。败者树使k个记录中关键字比较次数从 \(k-1\) 次变成了 \(\lceil log_2k \rceil\) 次。

置换选择排序(Replacement-selection sorting)

待补充。。。

标签:归并,外部,读写,时间,磁盘,排序,减少
来源: https://www.cnblogs.com/nerd-/p/16676460.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有