如果有一个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。
解决思路:
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。
相关文章推荐
- 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。 61.54.231.245 61.54.231.9 61.54.231.246 61.54.231.48
- 【笔试】超大文件里的数据去重排序;将log中MAC地址提取出来;取出数据库表T里第20行到29行的数据;如何判断一个二叉树B是不是二叉树A的子树?
- 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
- 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
- 如果已经在一个类中定义了全局函数,在其它类文件中如何调用它?
- 如果sln文件和网站不在同一个文件夹下,如何统一到一个文件夹下?
- FindFile FindNextFile 如何遍历一个文件夹并获取里面文件的信息
- 如何在winhex里面将一个文件转成C语言数组存储
- MAC应用 如何连续在一个文件里面追加字符串( NSFileHandle定位到文件末尾)
- iphone阅读器,如果要读取一个文本文件,请问你是如何处理编码问题的?另外像pdf格式的文件,你如何读取。?
- 一个c++程序里面可以有多少个.cpp文件,如果可以有多个,那么是怎么连接的,怎么运行的。
- 头文件里面实现一个函数,在两个cpp中包含,则重复定义,如果加上inline则不会报错
- 如何通过ADO,获取一个数据库文件里面所有的表?
- 如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,
- 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】
- 用mingw编译C++工程;程序里面的cout<<"aaa";cmd运行c++程序,aaa内容在控制台不显示,如何将aaa输出到控制台屏幕并将控制台内容写到一个文件中。
- iOS--字典数组排序(每个数组里面都是一个model)NSSortDescriptor
- 如何复制一个目录里面的所有目录和文件
- 如果让你来制作一个访问量很高的大型网站,你会如何来管理所有CSS文件、JS与图片?
- 如果在一个KeyFigure的Rule里面,使用另外一个KeyFigure的数据,如何实现?