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

C# 使用排序整数数组键快速查找整数索引值,c#,hash,map,dictionary,C#,Hash,Map,Dictionary,我正在寻找使用排序整数数组键查找整数值的最快解决方案 键是整数数组,固定长度为3,每个数组都进行排序。 该值是一个整数 我的数据保证只有一个或两个排序数组具有相同的内容。每个数组都有一个唯一的索引 我试图找到匹配的数组对 我的想法是使用字典(我正在用C#进行原型设计,并将转向C++) 对于每个数组,我将查找字典,看看它是否已经存在。如果是,我就把它从字典里删除。如果我在字典里找不到它,那么它要么是一个单子,要么是匹配对中的第一个,所以我将把它添加到字典中 我的问题是,如果速度是我最关心的问题,那

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

键是整数数组,固定长度为3,每个数组都进行排序。
该值是一个整数

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

我试图找到匹配的数组对

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

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


我的问题是,如果速度是我最关心的问题,那么对数据给出非常具体的保证,最好的容器是什么?另外,对于排序整数数组的任何适当的(快速)散列函数或比较函数的任何建议都将被理解。

< P>当你到达C++时,迁移到这个

(项目)

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

同时,对于C#来说,等价物应该是这样的:我认为有更快的字典实现可用,但由于C#不是最终的容器,它应该很好


您可能需要考虑将berkeleydb包括在您的项目中。它的速度非常快,并且可以在数据集增长时管理存储。它也支持各种各样的平台。

如果你的代码最终需要C++,不要浪费时间超过C。你在C中发现的快速工作并不意味着你在C++中得到相同的结果。CRC32是一个没有密码保证的快速散列函数。另外,除非您希望得到许多具有相同的前X个条目的数组,否则您可以仅对前X个条目进行散列以节省时间。