|
|
1
15
|
|
|
2
6
如果无法将数据放入RAM,请使用GNU排序程序(外部):它将对任意大小的文件进行排序,文件越大,创建进程的额外成本越小。 |
|
3
5
您可以在STL数组中对本机数据类型使用算法,而不仅仅是在STL容器上。但是,使用std::sort的另一个建议不会像POST那样起作用,因为strcmp返回一个值,当字符串不相同时,该值在所有比较中的计算结果都为true,而不仅仅是如果左手边小于右手边——这正是std::sort想要的;左侧返回true的二进制谓词小于右侧。 这项工作:
|
|
4
3
编辑 :字符串不是以null结尾的:
|
|
|
5
2
可能最简单的方法是使用旧的stdlib.h函数qsort。 这应该起作用:
请注意,这是标准C,仅适用于英文文本。 如果你有一个字符串对象列表,那么C++中其他的东西是可能的。 如果您在Linux上编写gtk或Qt应用程序,那么我建议您事先看看这些库。 |
|
|
6
2
如果文件较大且不适合RAM,则可以使用 bin/bucket 排序将数据拆分为较小的文件,并最终在结果文件中聚合各部分。其他响应将向您展示如何对每个bucket文件进行排序。 |
|
7
0
在C中排序字符串的规范方法,因此,在C++中使用一个可用但不一定推荐的方法,使用间接的级别。
|
|
|
8
0
有关基数排序算法的详细说明,请参阅Internet,我无法提供这些详细说明。除了我所说的,我将避免使用标准图书馆分类设施的所有其他解决方案。不幸的是,它们不是为你的特殊问题设计的。 |
|
|
9
0
http://en.wikipedia.org/wiki/Memory-mapped_file http://en.wikipedia.org/wiki/Mmap )在POSIX操作系统上。实际上,您将获得一个指向表示文件内容的连续内存的指针。 好的一面是,操作系统将负责将部分文件加载到内存中,并根据需要再次卸载它们。 一个缺点是,如果可能有多个进程访问该文件,则需要解析为某种形式的文件锁定,以避免损坏。
希望这能给你一些想法! |
|
|
GucciMane · 如何在不多次访问元素的情况下迭代二维数组? 8 年前 |
|
|
WoodrowShigeru · 使用原型就地修改阵列 8 年前 |
|
|
eyesima · 使基数排序到位-尝试理解如何 9 年前 |
|
|
theprowler · 熊猫:与所有的南的下降列 9 年前 |