什么是提取时间运行时,原因是什么



为什么要在堆中提取米?

请参阅那里:https://en.wikipedia.org/wiki/binary_heap#extract

用几句话,您执行三个步骤:

  • 首先,将堆的根替换为最后一个级别的最后一个元素。它是针对O(1(的。
  • 第二,将新的根与孩子的孩子进行比较(仍然是O(1((。如果一切正常,那就完成了!
  • 现在很棘手。如果新的根更大(我们认为您的顶部最少(比其中一个孩子更大,请交换它们!现在,您(可能(在孩子的子树中遇到了同样的麻烦。继续前进,重复子树内的步骤2和3!您将不是必须重复此次数要比树中的级别计数要多,因为每次下一个级别。平衡的二进制树中有O(LG N(水平。注意:如果您的根比两个孩子都要大,请与较小的孩子交换(您想提起它(。

最新更新