我正在尝试使用不相交集编写 Kruskal 算法的实现。我想我几乎可以正常工作,但我似乎无法让一段代码正常工作。代码需要检查图表上的节点是否已经在它试图添加到的集合中;否则,您不想添加它。这是我正在使用的代码:
public static boolean difSets(int index1, int index2, ArrayList<Node> sets[], Node nodes[])
{
int setnum1 = 0;
int setnum2 = 0;
for(int i = 0; i < nodes.length; i++)
{
for(int j = 0; j < sets[i].size(); j++)
{
if(nodes[index1].getX() == sets[i].get(j).getX() && nodes[index1].getY() == sets[i].get(j).getY());
setnum1 = i;
if(nodes[index2].getX() == sets[i].get(j).getX() && nodes[index2].getY() == sets[i].get(j).getY());
setnum2 = i;
}
}
if(setnum1 == setnum2)
return false;
else
return true;
}
一点信息:这个方法是确定两个节点是否已经在同一个集合中。节点数组包含图上的所有点(节点是一个只存储 x 和 y 值并可以检索它们的类。集合是节点的 ArrayLists 数组。在问题开始时,每个节点都将在一个 ArrayList 本身;到最后,它们应该都在同一个 ArrayList 中。索引 1 和 2 对应于 Nodes 数组中的节点。
不幸的是,这段代码似乎没有给我正确的输出;我已经盯着它看了一个多小时,我无法弄清楚问题是什么,所以我希望这里有人能帮助我。
提前致谢。