联合二进制堆

问题描述 投票:1回答:2

我希望将k个二项式堆H1,H2,...。., Hk 联合成一个大的二项式堆。假设每个二项式堆有n个元素。假设我正在做2个联合的序列。

我想知道时间复杂度是多少?

algorithm performance data-structures time-complexity heap
2个回答
0
投票

我假设你知道 合并二项式堆 需要O(log m)时间,其中m是两个堆中较大的一个堆的元素数。

由于k个堆中的每个堆都有n个元素,所以H中任何时候的最大元素数都是nk。因此,最大的堆在每次合并时总是有O(nk)个元素。因此,每次合并将花费O(log nk)=O(log n + log k)时间。由于总共有k次合并,所以根据需要,全部操作将耗费O(log n + log k)时间。

© www.soinside.com 2019 - 2024. All rights reserved.