请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于union()并的问题

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 里,他们在同一个集合里。


继续加油!:)


0 回复 有任何疑惑可以回复我~
  • 提问者 慕移动9586716 #1
    老师,那我们这里也就是将索引当做元素,将真正的元素看做是集合,是这样理解吗?
    回复 有任何疑惑可以回复我~ 2021-04-04 14:47:49
  • liuyubobobo 回复 提问者 慕移动9586716 #2
    不是,索引就是元素。你可以理解成真正的元素内容是被这些索引指向的另一个数组。比如一个 Students[] 数组,Students[i] 存放的是第 i 个学生的所有信息。但是在集合操作中,第 i 和学生叫什么考多少分不重要,我们只关注他们所属的集合关系。
    回复 有任何疑惑可以回复我~ 2021-04-04 14:53:11
  • 提问者 慕移动9586716 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-04-04 16:26:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信