Algorithm heap tree-输出排序列表的复杂性

Algorithm heap tree-输出排序列表的复杂性,algorithm,data-structures,heapsort,Algorithm,Data Structures,Heapsort,有一个未排序的数字列表,并由此构建了一个堆树 从已经构建的堆树中输出已排序的数字列表的时间复杂度是多少 (注意:无需从树中删除节点即可获得当前的最小值/最大值,以寻找一种有效的方法来遍历堆树并输出已排序的数字列表)与对列表进行初始排序相同-O(nlogn)。这是因为对列表进行重排序需要O(n)个时间,并且不可能比O(nlogn)更快地从堆中打印排序序列,因为这意味着可以比O(nlogn)更快地对任何序列进行排序(通过重排序然后输出),这被证明是错误的。这是一个重复的问题。原始问题中提供了一个示例

有一个未排序的数字列表,并由此构建了一个堆树

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


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

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

这是一个重复的问题。原始问题中提供了一个示例,说明了为什么它是
nlogn
操作,而不是
logn

,正如Grigor所说,除非您可以使用计数排序(在这种情况下,您不需要堆)。虽然这只是假设了一个下限,但我不理解为什么它会被否决+1.