为了用于分析排序算法,我想要ArrayList<Integer>
一百万美元的整数。整数的范围无关紧要:[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
吗?为什么?
(我自己会对此进行分析,但我的家用硬件不足以对此进行测试。此外,我想要一个概念/理论解释。)