有一个未排序的数字列表,并且构造了一个堆树。
从已构建的堆树输出已排序的数字列表的时间复杂度是多少?
(注意:不需要从树中删除节点以获取当前的最小值/最大值,寻找一种有效的方法来遍历堆树并输出已排序的数字列表)
答案 0 :(得分:5)
与最初对列表排序相同 - O(nlogn)。这是因为堆积列表需要花费O(n)时间,并且不可能比O(nlogn)更快地从堆中打印排序序列,因为它意味着可以比O(nlogn)更快地对任何序列进行排序(通过堆积然后输出),这被证明是错误的。
答案 1 :(得分:1)
Print a tree in sorted order using heap properties (Cormen)这是一个重复的问题。原始问题中提供了一个说明,说明为什么它是nlogn
操作,而不是logn
。