2011-12-02 54 views
0

我正在尋找此功能的優化:整數數組陣列優化?

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; 
     }  
    }  
} 
+0

你知道有關'num'和'div'的內容嗎? (順便說一句,我假設你最後需要'return false;' –

+0

確保你的編譯器/ JIT正確地向量化循環?沒有更多關於數據的知識,你可以做的事情不多。輝光的想法可以用於大型數組。 – Voo

回答

0

如果排序div,你可以做一些關於它的搜索,它會讓你減少的div的數量。這是否會節省您的時間取決於機器和您的數據。但是,例如,如果您的最小數字是1,並且您的最大數字小於當前值x,則不需要搜索數組,因爲它們都不會起作用。

1

與@ glowcoder的答案類似 - 它可能是一個勝利,首先過濾除數div以除去倍數。例如,如果您有3,則不需要保留9。

這樣做的有效性會非常依賴數據。如果divnum小得多並且具有許多倍數,那麼它會最好。這隻會增加成本,如果div都是素數。

+0

沒有關於數組內容或大小的信息......假設不好的情況(非常大,幾乎爲零) – Scott