把数据尽量平均分配到100个数据值范围,例如第一个范围0~10,第二个范围10~21,第三个范围21~30,……,然后抽取每个范围内的数据进行排序,然后按顺序组合这100个范围内的数据则可。 如果100个值范围不够,那么就1000个范围好了。
[quote=引用 9 楼 damaoshan 的回复:] [quote=引用 8 楼 zhangxiangDavaid 的回复:] [quote=引用 4 楼 damaoshan 的回复:] [quote=引用 3 楼 zhangxiangDavaid 的回复:] 只要内存足够,可以把5G的数据放入内存
[quote=引用 3 楼 zhangxiangDavaid 的回复:] 只要内存足够,可以把5G的数据放入内存
搜索"外排序"
只要内存足够,可以把5G的数据放入内存
[quote=引用 8 楼 zhangxiangDavaid 的回复:] [quote=引用 4 楼 damaoshan 的回复:] [quote=引用 3 楼 zhangxiangDavaid 的回复:] 只要内存足够,可以把5G的数据放入内存
用外排序或多线程排序。
数组 最简单,然后快排
不知道怎么把5G的数据存在内存中。 数组?or? linux的sort命令很好用,但是不知道它的源码是怎么样的。 嗯。多谢了~
用文件读写模拟内存读写。 Windows:_fseeki64 Linux:fseeko64
5G放到内存里面呀,一定要这样吗?不能排一个G保存一个G么? 排序嘛,用STL的set就可以吧 自动排序。
64,654
社区成员
250,484
社区内容
加载中
试试用AI创作助手写篇文章吧