並べ替えアルゴリズムのプロファイリングで使用するために、ArrayList<Integer>
100 万ドルの整数が必要です。整数の境界は問題ではありません: [0, MAX_VALUE
], [ MIN_VALUE
, MAX_VALUE
] などはすべて問題ありませんが、それらを広く配布したいと考えています。
このコードを使用すると、次のことに気付きます。
for (int i=0; i<1_000_000; i++) {
list.add(i);
}
Collections.shuffle(list);
mergeSorter.sort(list);
呼び出しのshuffle
実行には約 10 秒かかりますが、マージ ソートには 2 ミリ秒しかかかりません。
したがって、私の質問:を使用するよりも、これらの数値をランダムに生成する ( list.add((int) (Math.random() * 1_000_000))
)方が高速でしょうshuffle
か? また、その理由は?
(私はこれを自分でプロファイリングしますが、私のホーム ハードウェアではこれをテストするには不十分です。さらに、概念的/理論的な説明が必要です。)