Я пытаюсь написать реализацию алгоритма Крускала с использованием непересекающихся наборов. Я думаю, что у меня это почти работает, но я не могу заставить часть кода работать правильно. Код должен проверить, находится ли узел на графе уже в наборе, к которому он пытается быть добавлен; в противном случае вы не хотите его добавлять. Вот код, который я использую:
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 и может их извлекать. Наборы — это массив списков массивов узлов. В начале задачи каждый узел будет в сам по себе ArrayList, к концу все они должны быть в одном и том же ArrayList.Индексы 1 и 2 соответствуют узлу в массиве Nodes.
К сожалению, этот код не дает мне правильного результата; Я смотрел на это больше часа и не могу понять, в чем проблема, поэтому я надеялся, что кто-то здесь может мне помочь.
Заранее спасибо.