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

本文关键字:整数 查找 索引值 数组 排序 | 更新日期: 2023-09-27 18:08:40

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

key是固定长度为3的整数数组,并且每个数组都是排序的。
整数形式

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

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

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

对于每个数组,我将在字典中查找它是否已经存在。如果是,我就把它从字典中删除。如果我没有在字典中找到它,那么它要么是一个单元素,要么是匹配对中的第一个,所以我将它添加到字典中。

我的问题是——给他们非常具体的数据保证,什么是最好的容器——考虑到速度是我最关心的?此外,如果有任何关于合适的(快速的)哈希函数或排序的整数数组比较函数的建议,我们将不胜感激。

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

当你开始使用c++时,迁移到这个

http://sparsehash.googlecode.com/svn/trunk/doc/dense_hash_map.html(项目在这里)

这是我见过的最快的hashmap实现之一。

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

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