Я пытаюсь реализовать алгоритм сортировки слиянием для ArrayList в качестве параметра. Насколько я могу судить, код работает нормально, за исключением моего оператора if в методе слияния. Я получаю сообщения об ошибочных типах операндов для бинарного оператора '<='. Я уверен, что это потому, что у меня сравниваются два несовместимых типа, но я, кажется, ударил стену, выясняя это. Тем не менее, учащимся, поэтому любое руководство или руководство в правильном направлении было бы чрезвычайно полезно. </p>
Я получил его теперь правильно сортировать по фамилии. Теперь мне интересно, что мне нужно изменить, чтобы отсортировать по имени или даже идентификационному номеру. Если бы я мог получить некоторые рекомендации о том, как справиться с этим, я был бы признателен.
private static void sortListByID (List<Person> theList) {
if (theList.size() >= 2) {
List<Person> left = new ArrayList<>();
left.addAll(theList.subList(0, theList.size()/2));
List<Person> right = new ArrayList<>();
right.addAll(theList.subList(theList.size()/2, theList.size()));
sortListByID(left);
sortListByID(right);
merge(theList, left, right);
}
}
private static void merge(List<Person> result, List<Person> left,
List<Person> right) {
int i1 = 0;
int i2 = 0;
for (int i = 0; i < result.size(); i++) {
if (i2 >= right.size() || (i1 < left.size() &&
left.get(i1).compareTo(right.get(i2)) < 0)) {
result.set(i, left.get(i1));
i1++;
} else {
result.set(i, right.get(i2));
i2++;
}
}
}