你如何测试排序算法的速度?

Cel*_*tas 2 java sorting algorithm data-analysis

我想对排序算法的速度做一个经验测试。最初我随机生成数据,但这似乎是不公平的,并且弄乱了一些算法。例如,对于快速排序,枢轴选择很重要,选择枢轴的一种方法是始终选择第一个,另一种方法是选择第一个、最后一个和中间元素的中值。但是如果数组已经是随机的,那么选择哪个主元并不重要,所以从这个意义上说这是不公平的。你如何解决这个问题?

我在哪里可以获得用于测试排序算法的真实样本?我听说在实际场景中数据通常是部分排序的,但是如何在排序算法中使用这些信息?

小智 5

为了测试排序算法的效率,通常使用多个数据集并分别计时。完全随机、部分排序、完全排序和排序但反向的数据通过相同的算法运行,以在每个字段中得出合适的平均值。这创造了最公平的测试环境。

虽然平均而言,有些算法比其他算法要好得多,但它们各自在解决方案中都有自己独特的用途。

虽然没有数值数据,但我所描述的过程可以在sort-algorithms.com上的一个有趣的动画中看到

  • 应生成并保存数据集,并在相同的副本上运行算法;“随机”不应该意味着为每次运行生成不同的集合。 (3认同)