我們正在學習計算機科學類的介紹中的效率分析,我在解決此問題時遇到了問題。具有多個參數的方法的大O分析
假設我有一個方法:
public static void foo(int[][] arr, int num1, int num2) {
for (int i=0;i<arr.length;i++) {
arr[0][i] = num1*i;
}
for (int j=0;j<arr.length;j++) {
arr[i][0] = num2*i
}
}
我的第一個問題是,如果我有一個方法,其中有3 for循環,但他們沒有嵌套,將增長率是多少?
此外,對於這種特定的製作方法,此方法的輸入大小是數組的面積?因爲每一個for循環從i = 0到i =陣列
最後的大小,如果
public static void fee(int[][] arr, double num1, double num2) {
num1=num1*Math.random();
while (num1 == 0) {
num1=num1*Math.random();
}
for (int i=0;i<num1;i++) {
//do something with arr
}
num2=num2*Math.random();
while (num2 == 0) {
num2=num2*Math.random();
}
for (int j=0;j<num2;j++) {
//do something with arr
}
}
我怎麼會去尋找大O分析?
謝謝,我已經閱讀了多個關於查找大O的資源,但我仍然感到困惑。
你的第一個方法不能編譯。 'arr [i] [0] = num2 * i'應該是'arr [j] [0] = num2 * j'。你的第二個方法也不能編譯 - 你應該把double賦給一個int - 並且如果num1或num2是0,它將無限循環。 – irrelephant 2014-11-24 00:18:13
對不起,我只是寫了很快提供一個想法,因爲我不能根據我的大學在網上發佈我的實際作業。 – rrpking 2014-11-24 00:24:19
我很確定你有'num2 == 0'它應該是'num2!= 0' – matts1 2014-11-24 00:31:37