2016-06-27 21 views
1

この時間計算

int n = some arbitrary number 
int[] array = new int[n]; 

は時間が必要な線形(O(n))があるか、定数(O(1))?
私はin the javadocsと見て、 hereはStackOverflowにありますが、私が見たすべての投稿が動的割り当てを処理しているため、答えが見つかりませんでした。あなたがintの新しい配列を作成するときに、初期化は、このようにOを取って、値0n割り当てが含まれてJavaで

+1

あなたは、このリンクをチェックしてhttp://stackoverflow.com/questions/5640850/java-whats-the-big-宣言時のサイズの配列を – Razib

+0

助けてくれたrazibに感謝します... – Fynn

+0

私はちょうどそれを見つける前に...私は質問を削除する必要があります) – Fynn

答えて

0

、配列のすべてのメンバーは、(「0」である)int型の初期値を取得する必要があります(n)。

あなたはまた、異なるnので、次のコードを使用して、それを確認することができます。

public static void main(String[] args) 
{ 
    int n = 1000000; 
    int numSamples = 10000; 
    long sumTime = 0; 
    for (int i = 0; i < numSamples; i++) 
    { 
     sumTime += test(n); 
    } 
    double average = sumTime/(double) numSamples; 
    System.out.println(average); 
} 

private static long test(int size) 
{ 
    long start = System.currentTimeMillis(); 
    int[] a = new int[size]; 
    return System.currentTimeMillis() - start; 
} 
+0

しかし、OPは '動的ではない'と言っているので、コンパイラは 'static'キーワードを表示しないかもしれないし、クラスローダーを表示しないかもしれない。 – Marichyasana

+0

テストはそれがO(n)であることを確認します。サンプルテストコードを追加しました。 –