关于union()并的问题
来源:6-2 Quick Find
慕移动9586716
2021-04-04
bobo老师:
1).它这里这意义是什么?
// 合并过程需要遍历一遍所有元素, 将两个元素的所属集合编号合并
for (int i = 0; i < count; i++)
if (id[i] == pID)
id[i] = qID;
2).这里的if (id[i] == pID) 和id[i] = qID;不会存在值的覆盖问题吗?
3).最后这样操作下去,它合并了,不就变成一个位置放了两个不一样的值了吗,您可以举一个小数据例子来说明一下吗?
写回答
1回答
-
比如有六个元素:
0 1 2 3 4 5
初始:
0 1 2 3 4 5
0 1 2 3 4 5
表示六个元素分属不同的集合:元素 0 在集合 0;元素 1 在集合 1;元素 2 在集合 2;元素 3 在集合 3;元素 4 在集合 4;元素 5 在集合 5;
现在,如果我们想把元素 2 所在的集合和 元素 3 所在的集合合并在一起,也就是执行 union(2, 3),执行后就变成了:
0 1 2 3 4 5
0 1 3 3 4 5
也就是元素 2 和元素 3 都在集合 3 里,他们在同一个集合里。
如果我们想把元素 3 和 元素 5 合并在一个集合里,也就是执行 union(3, 5),执行后就变成了:
0 1 2 3 4 5
0 1 5 5 4 5
也就是元素 2 , 3, 5 都在集合 5 里,他们在同一个集合里。
继续加油!:)
072021-07-30
相似问题