堆排序的时间复杂度是多少?

如题所述

堆排序的时间复杂度为O(nlogn)。

堆排序的最坏时间复杂度和平均时间复杂度都为O(n*log2n),而对N个元素建堆的时间复杂度为O(N),删除堆顶元素的时间复杂度为O(logN),因此删除堆所有元素的时间复杂度为O(NlogN)。

不管数组初始时是有序的还是逆序的,堆排序都会先建堆,变成了堆序的性质。从这点上分析,堆排序是一个非常稳定的算法。总而言之,建堆的时间复杂度为O(n),调整堆的时间复杂度为O(logn),其中调用了n-1次,因此堆排序的时间复杂度为O(n)+O(nlogn) ~ O(nlogn)

温馨提示:答案为网友推荐,仅供参考
相似回答