堆树 - 输出排序列表的复杂性

时间:2012-08-01 12:03:34

标签: algorithm data-structures heapsort

有一个未排序的数字列表,并且构造了一个堆树。

从已构建的堆树输出已排序的数字列表的时间复杂度是多少?

(注意:不需要从树中删除节点以获取当前的最小值/最大值,寻找一种有效的方法来遍历堆树并输出已排序的数字列表)

2 个答案:

答案 0 :(得分:5)

与最初对列表排序相同 - O(nlogn)。这是因为堆积列表需要花费O(n)时间,并且不可能比O(nlogn)更快地从堆中打印排序序列,因为它意味着可以比O(nlogn)更快地对任何序列进行排序(通过堆积然后输出),这被证明是错误的。

答案 1 :(得分:1)

Print a tree in sorted order using heap properties (Cormen)这是一个重复的问题。原始问题中提供了一个说明,说明为什么它是nlogn操作,而不是logn