随机化随机数组Quicksort

时间:2017-04-12 10:19:31

标签: java arrays sorting random quicksort

我是计算机科学的第一年,我了解到你可以通过在开始排序之前随机化数组来避免QuickSort的最坏情况。

但是当输入已经是随机的时候这也适用吗?我认为甚至有机会随机放置数组而不是更多地改组它?

1 个答案:

答案 0 :(得分:0)

随机避免O(某事)纯粹是学术上的细微差别。 Math.random()是如此耗时,以至于效果将是消极的。

真正重要的是

  • 执行的操作总数
  • 避免随机访问内存以避免缓存未命中(谷歌有关缓存命中率的事情)。

在这方面,良好的排序算法是

  • Yarroslavkij的双枢轴快速排序,在java排序中是默认的。这个通过选择两个枢轴并将阵列分成三个部分,以更好的确定性方式解决最坏情况。
  • Radix排序,Bucket排序或派生,在我看来可能是最快的algos,但使用2n内存。