使用排序的整数数组键快速查找整数索引值

时间:2013-04-12 03:43:40

标签: c# hash map dictionary

我正在寻找使用排序整数数组Key查找整数值的最快解决方案。

Keys是整数数组,其长度固定为3,每个数组都已排序 值是一个整数。

我的数据保证只有一个或两个排序的数组具有相同的内容。每个数组都有一个唯一的索引。

我正在尝试找到匹配的数组对。

我的想法是使用字典(我在C#中进行原型设计并将转向C ++)

对于每个数组,我会查看字典并查看它是否已存在。如果是,我将其从字典中删除。如果我没有在字典中找到它,那么它既可以是单例,也可以是匹配对中的第一个,所以我将它添加到字典中。

我的问题是 - 给出非常具体的数据保证,最好的容器是什么 - 考虑到速度是我的主要关注点?此外,任何关于适当(快速)散列函数或比较排序整数数组函数的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

当您使用C ++时,请迁移到此

http://sparsehash.googlecode.com/svn/trunk/doc/dense_hash_map.html(项目here。)

这是我遇到的最快的hashmap实现之一。

同时,对于C#,等价物将是这样的:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx我想有更快的字典实现可用,但由于C#不是最终的容器,它应该做得很好。

您可能想要考虑在项目中包含berkeleydb。它非常快,并且在数据集增长时管理存储。它也得到了各种平台的支持。