Algs4-1.5.8一个反例证明

1.5.8用一个反例证明quick-find算法中的union()方法的以下直观实现是错误的:

public void union(int p,int q)

{

   if (connected(p,q) return;

  //将p的分量重命名为q的分量

  for (int i=0;i<id.length;i++)

      if (id[i]==id[p]) id[i]=id[q];

  count--;

}

答:反例:触点0,1,2,分量名0,0,2,p=0,q=2时,for循环结束后分量名为2,0,2,没有将分量名0全部更名成2。只会将触点p相同分量名中触点小于等于p的分量更名,相同分量中大于p的触点的分量不会更名。

posted @ 2018-10-26 10:04  修电脑的龙生  阅读(233)  评论(0编辑  收藏  举报