堆排序的最坏情况是复杂性,O(nlogn)而快速排序的则是最坏情况O(n^2)。但是经验证据表明,快速排序是一种优势。这是为什么?
O(nlogn)
O(n^2)
主要因素之一是quicksort具有更好 的引用位置 -下一个要访问的内容通常在内存中与您刚刚查看的内容很接近。相比之下,堆排序的跳跃幅度更大。由于彼此靠近的事物可能会一起缓存,因此快速排序往往会更快。
但是,quicksort的 最坏情况下的 性能明显比heapsort的要差。由于某些关键应用程序需要保证速度性能,因此在这种情况下堆排序是正确的方法。