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

首先,对于这个这样一个问题,我们肯定不能直接一次性全部将数据加载到内存里面。

解决思路:

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。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值