並べ替えアルゴリズムのプロファイリングで使用するために、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か? また、その理由は?
(私はこれを自分でプロファイリングしますが、私のホーム ハードウェアではこれをテストするには不十分です。さらに、概念的/理論的な説明が必要です。)