客观题——并查集

选择题
1.包含数字0到8的不相交集的数组表示由{1,-4,1,1,-3,4,4,8,-2}给出。然后将包含6和8的两个集合合并(按大小合并) ,得到的根的索引和存储在根中的值是:
选项
A    1 and -6
B    4 and -5
C    8 and -5
D    8 and -6
2.不相交集的数组表示由{4,6,5,2,-3,-4,3}给出。如果元素的编号从1到7,那么通过按大小和路径压缩调用 Union (Find (7) ,Find (1))后得到的数组是:
选项
A    { 4, 6, 5, 2, 6, -7, 3 }
B    { 4, 6, 5, 2, -7, 5, 3 }
C    { 6, 6, 5, 6, -7, 5, 5 }
D    { 6, 6, 5, 6, 6, -7, 5 }
3.不相交集的数组表示由{2,-4,2,3,-3,5,6,9,-2}给出。请记住,元素的编号是从1到9。使用 Union-by-size 调用 Union (Find (4) ,Find (6))之后,结果数组中的哪些元素将被更改?
选项
A    a. elements of index 2 and 5
B    a. elements of index 2 and 6
C    a. elements of index 4 and 5
D    a. elements of index 4 and 6
4.In a disjoint set problem, given a set of m elements S = { 1, 2, 3, …, m } and n ( 0<n<m ) distinct relations, the set S must have __ equivalence classes.
选项
A    at leatst m
B    exactly n
C    exactly m−n
D    at least m−n
5.已知不相交集合用数组表示为{ 4, 6, 5, 2, -3, -4, 3 }。若集合元素从1到7编号,则调用Union(Find(7),Find(1))(按规模求并,并且带路径压缩)后的结果数组为:
选项
A    { 4, 6, 5, 2, 6, -7, 3 }
B    { 4, 6, 5, 2, -7, 5, 3 }
C    { 6, 6, 5, 6, -7, 5, 5 }
D    { 6, 6, 5, 6, 6, -7, 5 }
6.若并查集用树表示,其中有n个结点,查找一个元素所属集合的算法的时间复杂度为____。
选项
A    O(log2n)
B    O(n)
C    O(n2)
D    O(nlog2n)
7.在不相交集合问题中,给定一组 m 元素 S = {1,2,3,... ,m }和 n (0 < n < m)不同的关系,集合 S 必须有 _ _ 等价类。
选项
A    at leatst m
B    exactly n
C    exactly m−n
D    at least m−n

填空题
1.本题要求给出下列并查集操作执行后,集合数组内存储的结果。
union( find(4), find(6) )
union( find(2), find(7) )
union( find(0), find(4) )
union( find(7), find(6) )
union( find(7), find(1) )
1
2
3
4
5
注意:这里假设按规模求并(若两集合规模相等,则把第1个集合的根结点作为结果的根结点),并且用带路径压缩的查找。对所有的0≤i≤7,S[i]被初始化为−1。

i01234567
S[i]444-1-6-142


程序填空题
1.请填空完成下列代码,功能是实现并查集中的“查”,并且带路径压缩。
 

SetType Find ( ElementType X, DisjSet S )
{   
   ElementType root, trail, lead;

   for ( root = X; S[root] > 0; root = S[root]) ;  
   for ( trail = X; trail != root; trail = lead ) {
      lead = S[trail] ;   
      S[trail] = root;   
   } 
   return root;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值