不相交集合的摊销时间复杂度

时间:2017-10-05 19:23:09

标签: algorithm data-structures time-complexity amortized-analysis

假设我们使用链表表示来表示每个集合,其中每个节点具有3个字段,即值,下一个指针和指向该集合的代表的指针。我们维护每个集合的一个索引对象(或代表),包括3个字段head,tail和count(集合中元素的数量)。

对于集合联盟,我们需要为每个元素创建一个新集合,然后使用它们的联合。

n个元素的每个创建操作需要O(1)时间,因此total = O(n)。

现在在联合期间,我们以这样的方式组合元素,即将较低计数集附加到较高计数1。因此,n组联合的时间复杂度将为O(n)。

总时间复杂度= O(n)+ O(n)/ 2n = O(1)。

所以根据我的说法,联合操作的时间复杂度应该是O(1),但到处都是O(n)。为什么会这样?

0 个答案:

没有答案