Arrays 整数数学数组优化?
我正在寻找此函数的优化:Arrays 整数数学数组优化?,arrays,optimization,Arrays,Optimization,我正在寻找此函数的优化: public bool isDivideEvenly (int[] num, int[] div) { for (int x = 0; x < num.length; x++) { for (int y = 0; y < div.length; y++) { if (num[x] % div[y] == 0) return true; }
public bool isDivideEvenly (int[] num, int[] div)
{
for (int x = 0; x < num.length; x++)
{
for (int y = 0; y < div.length; y++)
{
if (num[x] % div[y] == 0) return true;
}
}
}
public bool是独立的(int[]num,int[]div)
{
对于(int x=0;x
如果对div进行排序,可以对其进行一些搜索,从而减少div的数量。这是否能节省您的时间取决于机器和您的数据。但是,例如,如果最小的数字是1,而最大的数字小于当前的x
值,则不需要搜索数组,因为它们都不起作用。与@glowcoder的答案类似,首先过滤div
的除数以删除倍数可能是一个胜利。例如,如果你有3个,就不需要保留9个
这种方法的有效性将非常依赖于数据。如果
div
比num
小得多,并且有很多倍数,则效果最好。如果div
都是素数,那只会增加成本。你知道num
和div
的内容吗?(我假设您希望返回false;
最后,顺便说一下…)确保编译器/JIT正确地对循环进行矢量化?如果没有更多的数据知识,你将无能为力。Glow的想法可能适用于大型阵列。没有关于阵列内容或大小的信息…假设情况不好(非常大,几乎没有重复)