采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
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).最后这样操作下去,它合并了,不就变成一个位置放了两个不一样的值了吗,您可以举一个小数据例子来说明一下吗?
比如有六个元素:
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 3 3 4 5
也就是元素 2 和元素 3 都在集合 3 里,他们在同一个集合里。
如果我们想把元素 3 和 元素 5 合并在一个集合里,也就是执行 union(3, 5),执行后就变成了:
0 1 5 5 4 5
也就是元素 2 , 3, 5 都在集合 5 里,他们在同一个集合里。
继续加油!:)
老师,那我们这里也就是将索引当做元素,将真正的元素看做是集合,是这样理解吗?
不是,索引就是元素。你可以理解成真正的元素内容是被这些索引指向的另一个数组。比如一个 Students[] 数组,Students[i] 存放的是第 i 个学生的所有信息。但是在集合操作中,第 i 和学生叫什么考多少分不重要,我们只关注他们所属的集合关系。
非常感谢!
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
8.8k 21
5.7k 3
4.9k 5
1.4k 18