在《算法(第四版)》 1.5 节对“加权 quick-union 算法”进行分析中,有这样一段话(中文 P147 ,英文 P230 ):
加权 quick-union 算法处理 N 个触点和 M 条连接时最多访问数组 cMlgN 次,其中 c 为常数。这个结果和 quick-find 算法(以及某些情况下的 quick-union 算法)需要访问数组至少 MN 次形成了鲜明的对比。
我不明白为什么“加权 quick-union 算法”最多访问数组 cMlgN 次,“quick-find 算法”至少访问数组 MN 次:
因为,最后剩下 M 条连接至少需要调用 union 函数 (N-M) 次,对于“quick-find 算法”,union 操作至少访问 (N+3) 次数组(中文 P141 ),所以总共至少访问数组 (N-M)(N+3) 次。类似地,因为“加权 quick-union 算法”的 union 函数最多访问数组 lgN 次(中文 P147 ),所以最多访问数组 (N-M)lgN 次。
是哪里理解错了吗?谢谢。