Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的小步巨步算法。哈希表内存不足_C#_Hashtable - Fatal编程技术网

c#中的小步巨步算法。哈希表内存不足

c#中的小步巨步算法。哈希表内存不足,c#,hashtable,C#,Hashtable,我正在尝试使用哈希表来解决离散算法问题。 我使用的是Shanks婴儿步巨步算法。 我的哈希表包含大约11000000个键和值。 我总是遇到内存不足的异常。 有没有办法“修复”这个问题?或者使用不同的数据结构? 我将Visual C#Express 2010与.NET 4.0 Framework一起使用我觉得这有点作弊,但给出了一个解决方案 “该算法需要O(m)内存。在算法的第一步选择较小的m可以使用较少的内存。这样做会增加运行时间,即O(n/m)。”。或者可以使用Pollard的rho对数算法,

我正在尝试使用哈希表来解决离散算法问题。 我使用的是Shanks婴儿步巨步算法。 我的哈希表包含大约11000000个键和值。 我总是遇到内存不足的异常。 有没有办法“修复”这个问题?或者使用不同的数据结构?
我将Visual C#Express 2010与.NET 4.0 Framework一起使用

我觉得这有点作弊,但给出了一个解决方案


“该算法需要O(m)内存。在算法的第一步选择较小的m可以使用较少的内存。这样做会增加运行时间,即O(n/m)。”。或者可以使用Pollard的rho对数算法,该算法的运行时间与小步巨步算法大致相同,但只需要少量内存。”

尝试针对64位平台。如今,32位可执行文件的虚拟内存空间经常不足。

键和值是什么数据类型?对我来说,这似乎有点奇怪,因为只有1100万个条目会出现内存错误;所以我猜是数据本身很大。这些值是连续的吗(可能允许使用简单数组)?我假设这些值是
biginger
s。hashtable的意思是字典,对吗?我用一个整数作为键,值是aBigInteger@CodeInChaos我相信这是字典…对不起,我对编程非常陌生,这是我第一次使用哈希表。稍后我会发布我的代码。你说的64位平台到底是什么意思?我正在运行一个64位系统。这就是你的意思吗?好的开始-你的项目使用什么CPU目标?32位?64位?有CPU吗?如果是64位或任何CPU,你应该状态良好。我无法在atm机上访问我的文件,所以我会试试这个,今晚晚些时候再回来。谢谢你的提示!但是,请记住,CLR对任何单个对象都施加了2Gb的限制。例如,在任何版本的.NET(32/64位)中都不能分配大于2Gb的数组。@Groo:ooh,我学到了一些新东西!我一直认为您可以在64位中分配巨大的数组,因为它们向.NET2.0添加了Array.longlegth。我猜我错了:(这显示了我实际需要分配大数组的频率!)