【发布时间】:2011-03-03 12:13:41
【问题描述】:
我有一个锯齿状数组String[][]。现在我需要在String[n][0] 中找到具有特定值的数组
我有一个简单的时刻
foreach foo in bar{
if(foo[0]==needle){
return foo;
}
}
正如您所见,这很慢,原因很明显。我是 C# 新手,刚刚看到 indexOf,但是如何在锯齿状数组中使用 indexOf?
我坚持的另一种方法是按String[n][0]对数组进行排序,转到中间的记录,检查我的值是更大还是更大,跳入上/下区域的一半等等,可能是3或 4 次,以便我可以更快地找到记录。
那么在我只知道[][0] 的锯齿状数组中获取数组的最快方法是什么?
【问题讨论】:
-
“慢”是什么意思? “bar”包含多少个一维数组,你需要多久进行一次这样的搜索,你得到了什么性能,你想要达到什么性能?
-
嗯,我有大约 25k foo 和 25k 针。我不知道具体需要多长时间,但我想大约需要 30 分钟。我需要把它缩短到大约 5 分钟。
-
当 foo[0] 在搜索之间没有变化时,创建一个像 Elian Ebbing 建议的字典将在几秒钟内完成。
-
@user##,你的意思是 30 分钟还是 30 毫秒?
标签: c# performance jagged-arrays