我希望将k个二项式堆H1,H2,...。., Hk 联合成一个大的二项式堆。假设每个二项式堆有n个元素。假设我正在做2个联合的序列。
我想知道时间复杂度是多少?
我假设你知道 合并二项式堆 需要O(log m)时间,其中m是两个堆中较大的一个堆的元素数。
由于k个堆中的每个堆都有n个元素,所以H中任何时候的最大元素数都是nk。因此,最大的堆在每次合并时总是有O(nk)个元素。因此,每次合并将花费O(log nk)=O(log n + log k)时间。由于总共有k次合并,所以根据需要,全部操作将耗费O(log n + log k)时间。