我正在尋找此功能的優化:整數數組陣列優化?
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;
}
}
}
如果排序div
,你可以做一些關於它的搜索,它會讓你減少的div的數量。這是否會節省您的時間取決於機器和您的數據。但是,例如,如果您的最小數字是1,並且您的最大數字小於當前值x
,則不需要搜索數組,因爲它們都不會起作用。
與@ glowcoder的答案類似 - 它可能是一個勝利,首先過濾除數div
以除去倍數。例如,如果您有3,則不需要保留9。
這樣做的有效性會非常依賴數據。如果div
比num
小得多並且具有許多倍數,那麼它會最好。這隻會增加成本,如果div
都是素數。
沒有關於數組內容或大小的信息......假設不好的情況(非常大,幾乎爲零) – Scott
你知道有關'num'和'div'的內容嗎? (順便說一句,我假設你最後需要'return false;' –
確保你的編譯器/ JIT正確地向量化循環?沒有更多關於數據的知識,你可以做的事情不多。輝光的想法可以用於大型數組。 – Voo