ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

大文件小内存排序问题

2021-04-12 23:33:54  阅读:186  来源: 互联网

标签:文件 排好序 最小值 胜者 内存 外存 排序 二叉树


比如外存中有100G的字符串文件,1G的内存,对字符串进行排序操作。 1.首先将100G的内容分成若干个小部分,每个部分不超过500MB。分别读取这些小部分进行排序,然后写入到外存中。这样就得到了若干个已经排好序的小部分。 2.多路归并排序,(相对二路归并而言)。对于k个已经排好序的小部分,每次取出它们各自的最小值,找到最小值中的最小值,写入到外存,同时将最小值所在外存区域指针向右移动。 每次比较最小值需要比较k-1次,总共有n-1轮,所以时间复杂度为O((n-1)*(k-1))。 这里还可以使用胜者树(完全二叉树)优化找最小值的过程。对第一次的查找建立一颗胜者树,如下所示: 找到最小值后,读取最小值所在外存区域的新值,然后修改胜者树对应节点的值,沿着从该结点到根结点的路径修改这棵二叉树,最多操作log(k)次。这样总体排序的时间复杂度就可以降为O(nlogk)。

标签:文件,排好序,最小值,胜者,内存,外存,排序,二叉树
来源: https://www.cnblogs.com/ningbing/p/14651127.html

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

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

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

ICode9版权所有