Size 优化 Rank优化对比疑问

来源:11-5 基于rank的优化

Kidand

2020-01-20

UnionFind3 :4.2729478 s
UnionFind4 :4.341375 s
UnionFind3 :4.2402221 s
UnionFind4 :4.2683184 s
UnionFind3 :4.185095 s
UnionFind4 :4.3035511 s

上面三次结果都是在千万的情况下,每次都是size优化优于rank优化

UnionFind3 :0.2544043 s
UnionFind4 :0.2153508 s
UnionFind3 :0.2503376 s
UnionFind4 :0.2095983 s

上面两次结果都是百万的情况下,rank优于size,这是为什么呢?

写回答

1回答

liuyubobobo

2020-01-20

rank 的优化只是“理论”上比 size 的优化更优,因为“理论”上可以让整个并查集的高度更低。但对于实际情况,有可能因为测试用例本身不会形成那么高的树,从而使得优化本身更费时间(因为需要更多多余的判断和操作)。


这就好比,归并排序理论上比插入排序更快,但是,如果数组本身有序,其实插入排序更快;如果数据量比较小,也很有可能插入排序更快。


所有的优化都不能保证在所有的情况下都更优。关键是:

1)对于极端情况,优化的效果更好;

2)对于平均情况,优化的效果不差。


继续加油!:)

6
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程