如何在2d数组中找到匹配值的最快方法

时间:2015-11-29 14:53:34

标签: c arrays

在2d数组中找到匹配值的绝对最快方法是什么?

假设我有数组int d50() { int result = d15(); int result = result*15+d15(); //0 to 225 int result = result*8+d8(); //0 to 1799 return result/36; //integer division rounds down } 我想找到匹配{1,5}的所有值,ofc数组会更长。最快的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果没有其他信息,最快的方法就是检查每个元素,直到找到它或检查完所有元素。

如果您可以控制数组的创建方式,则元素的检索速度会快得多。例如,保持元素按照某些标准排序将允许二进制搜索(例如使用ISO C bsearch())。

如果您甚至可以删除数组要求,则可以使用哈希表。有一些技术可以从散列表中检索值,保证只需要两次搜索。

最后,“所有优化都是缓存练习。”