您的位置:首页 > 其它

如果有一个500G的超大文件,里面都是数值,如何对这些数值排序?

2018-02-27 11:31 776 查看
首先,对于这个这样一个问题,我们肯定不能直接一次性全部将数据加载到内存里面。
解决思路:
1.先将这个文件里面的值拆分成多个文件,每个文件大小差不多512M。
2.在这1000个小文件里面的值进行排序去重
分两种情况:
① 如果里面的数值不是很大,这样拼接1000文件数值,拼接,去重,排序。对于8G的内存计算机应该是可以处理的。
② 文件里面的数值就是坑爹的大。
3.对于②处理也很简单,对于1000小文件,比如就按升序排序,我们不是已经拿到了每个的 排序么。我们把1000个文件里面最小的值(也就是第一个)拿出来,并把他们从这些文件中删除,拿这些最小值去重排序作为第一个文件,
4.重复上面的步骤,这样我们也得到1000个 这样排好序的文件。
举例 
如果有个文件(-1,5,2,1,4,3,2,4,5)
第一步:截取,每3个一个文件得到(-1,5,2),(1,4,3),(2,4,5)
第二步:去重排序(-1,2,5),(1,3,4),(2,4,5)
第三步:拿第一个去重排序得到新的3个小文件(-1,1,2),(2,3,4),(4,5)
看到了吧!按从小到大的顺序就出来了,我们最后都知道(-1,5,2,1,4,3,2,4,5)文件从小到大的顺序是-1,1,2,3,4,5。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐