效率:使用什么数据结构......?

时间:2010-02-17 22:10:27

标签: data-structures performance

我正在处理一个非常大的数据集。基本上我将使用数百万条记录并将值存储到数据集中。

每次存储值时,我必须首先检查以确保该值不在数据结构中。如果值在数据结构中,我必须更新(或删除/添加)记录以更新计数。

数据集中有重复,我不想使用错误的数据结构并获得O(n)的速度,因为我希望能够在一夜之间运行并在早上进入做完了!

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

正如其他人所说,哈希表可能正确答案,哈希表的空间效率不是非常高,所以如果你达到了你的地步可能会耗尽你的记忆,你应该考虑一个排序的键数组和一个并行排序的值数组。基本上,如果您可以提前访问整个键列表,请创建这些键的数组并对其进行排序。然后创建一个并行的值数组。每次需要存储内容时,只需执行二进制搜索(O(log N))以查找键数组中的索引,然后更新值数组中的相应索引。这将比哈希表的速度效率低,但几乎不会保证空间开销。

答案 1 :(得分:0)

听起来你想要一个hash table,与(可能)列表或某个特定结构相结合。对我来说,这听起来像database

答案 2 :(得分:0)

使用哈希表

答案 3 :(得分:0)

您可以尝试使用二叉树。 log_2(1,000,000)约为20.如果您不知道所有密钥将提前是什么,这可能会更好。