【发布时间】:2011-07-09 18:22:40
【问题描述】:
我有一个非常大的字符串序列。每个字符串的长度为 50。每个字符串仅包含来自英语 ABC 的字符。对该序列进行排序的最佳(最快)方法是什么?
【问题讨论】:
-
是不是内置的Sort方法不够快?
-
不,如果序列大小为 500 gb - 这还不够 :) 我听说这种情况有特殊算法
-
Mmh...我认为您指的是Radix-sort,不确定它是否适用于此,但您必须从头开始实现它...
-
哦,对不起,我的意思是 500 mb :) 我只有 [ABC]。
-
我做了一个简单的基准测试。我在 RAM 中创建了 2.5 亿 / 50 个 C# 随机字符串(所以是 OP 目标的一半)。它占用了 670mb 的内存(C# char 是 2 个字节,加上每个字符串的开销加上列表的开销)。在我的慢速笔记本电脑上花了 12 秒。在内存中对它们进行排序(序数排序)又花了 12 秒。排序不是问题:-)