find 两次 1 + 1,循环外层n次,这是固定的,内层 至少一次 + 1,最多 n - 1,所以n-3到2n+1
最坏的情况,总共:1个分量,第n次,n-1 次访问到达根索引,即索引指向自己的根位置,第n次访问次数(n-1)*2+1
最坏的情况: 两个需要归并的树总是高度相同的,如果发生这种情况那么 其数量总是为 2的幂
数量:1 2 4 8 ***** 2^k=n
高度:0 1 2 3 ***** k
k = lgn
所以最高高度为lgn
数学归纳法:
n = 1 高度为0;
i<j , i + j = n, 当数量为i的树和数量为j的树归并时,如果用加权quick-union高度只会增加1, 数量依然为n,1+ lgi = lgi+i<=lg(i+j)=lgn 也证明了加权的quick-union最高高度为lgn成立。
M个链接,最高高度为lgn,直接Mlgn,当然不只一次,connected,find,union都有使用,当n非常大的时候,其他单次常量访问基本可以忽略(我觉得我可能每理解准确,欢迎指导),所以直接cMlgn了
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…