找时间复杂度?

时间:2016-03-17 18:02:44

标签: algorithm data-structures time-complexity

假设每个都有n / logn元素的logn排序列表。然后告诉生成所有这些元素的排序列表的时间复杂性? (提示:使用堆数据结构)

如何通过使用堆数据结构来获得答案?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

  1. 创建一个size的最小堆=列表总数(此处为logn),并将所有列表中的第一个元素插入堆中
  2. 在每个列表*大小中重复以下步骤的数量,这是n次。

    a)从堆中获取最小元素(最小值始终为root)并将其存储在输出列表中。

    b)将堆根替换为从中提取元素的列表中的下一个元素。如果列表中没有任何元素,则用无限替换root。替换root后,堆化。

  3. 因此,主要步骤是步骤2,在这种情况下运行n的循环。每次heapify将采用loglogn的日志(大小)。

    因此时间复杂度为:nloglogn