algorithm - 在 N-1 比较中,如何在最初为空的二项式队列中插入 N 个元素?

标签 algorithm data-structures heap priority-queue

此外,分析将显示在最初执行 N 次插入 最坏情况下,空二项式队列将花费 O(N) 时间。事实上,仅使用 N-1 次比较就可以完成此操作;我们将此作为练习。

我在一本数据结构书中读到了这一点。我知道插入平均需要恒定的时间,在最坏的情况下需要 O(log n)。我无法理解该声明在说什么。

最佳答案

在插入操作期间,每次比较后都会合并两棵树(要插入的节点是 0 阶树)。合并操作会使树的总数减少1,并且任何操作都不会 split 树或增加树的数量。

因此,从 N 个单独的节点开始,即 N 个 0 阶树,如果我们进行 N-1 比较,那么我们将进行N-1合并,并且仅留下1树。此时不可能进一步合并,因此最多需要 N-1 次比较。

关于algorithm - 在 N-1 比较中,如何在最初为空的二项式队列中插入 N 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49598102/

相关文章:

C++ - 如何有效地找出 vector 中的任何字符串是否可以从一组字母中组装出来

c++ - malloc 多个小时间或几个大时间更快?

树上的算法。是否有提示可以帮助指出有效解决问题的方法?

javascript - 如果对象属性相同,则将数组中的两个对象合并为一个对象,并将唯一属性转换为数组

java - 删除最小值后如何基于 "heapify"数组的最小堆?

algorithm - 大型数据集的高效重新排序以最大化内存缓存效率

Java算法深度优先搜索

arrays - Perl:从数组创建哈希

algorithm - 为什么在由数组实现的堆中,索引 0 未被使用?

java - 检查异常后程序抛出异常