在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数组会更长。最快的方法是什么?
答案 0 :(得分:0)
如果没有其他信息,最快的方法就是检查每个元素,直到找到它或检查完所有元素。
如果您可以控制数组的创建方式,则元素的检索速度会快得多。例如,保持元素按照某些标准排序将允许二进制搜索(例如使用ISO C bsearch()
)。
如果您甚至可以删除数组要求,则可以使用哈希表。有一些技术可以从散列表中检索值,保证只需要两次搜索。
最后,“所有优化都是缓存练习。”