假设每个都有n / logn元素的logn排序列表。然后告诉生成所有这些元素的排序列表的时间复杂性? (提示:使用堆数据结构)
如何通过使用堆数据结构来获得答案?
答案 0 :(得分:1)
你可以这样做:
在每个列表*大小中重复以下步骤的数量,这是n次。
a)从堆中获取最小元素(最小值始终为root)并将其存储在输出列表中。
b)将堆根替换为从中提取元素的列表中的下一个元素。如果列表中没有任何元素,则用无限替换root。替换root后,堆化。
因此,主要步骤是步骤2,在这种情况下运行n
的循环。每次heapify将采用loglogn
的日志(大小)。
因此时间复杂度为:nloglogn
。