由于堆排序在所有情况下都具有O(nlogn)的时间复杂度,即最佳情况,平均情况和最差情况。 虽然快速排序在最坏的情况下具有O(n2)的时间复杂度。
然后,尽管在最坏的情况下复杂性较低,为什么堆排序没有在C ++库中实现而不是快速排序。
答案 0 :(得分:2)
与快速排序相比,堆排序慢。当然,一个vanilla quicksort也很慢,但是通过使用insert-sort和一些回退可以非常快速地使用范围的一部分对于quicksort来说不是最理想的罕见情况。实际上std::sort()
是一种混合算法。有关详细信息,请参阅我的Quicker Sorting演示文稿。