Я работаю над некоторыми алгоритмами сортировки для школьного проекта, и у меня есть проблема. Следующий код, не сортирующий массив, я пробовал один и тот же код с массивом чисел (единственное изменение в if), и он работал, но теперь с массивом String и использованием compareTo не работает его просто puts элементы в «случайном порядке».Java: Выбор типа строкового массива
public static void selectionSortISBN(Book pin[], int booksCounter) {
for (int x = 0; x < booksCounter; x++) {
int minIndex = x;
for (int y = x + 1; y < booksCounter; y++) {
if (pin[y].getISBN().compareTo(pin[minIndex].getISBN()) < 0) {
minIndex = y;
}
}
Book temp = pin[x];
pin[x] = pin[minIndex];
pin[minIndex] = temp;
}
}
EDIT:
Я изменил мой внутренний для этого:
for (int y = x + 1; y < booksCounter; y++) {
int com=pin[y].getISBN().compareTo(pin[minIndex].getISBN());
System.out.println(pin[y].getISBN()+" "+pin[minIndex].getISBN()+" = "+com);
}
и выход я получаю это
1537 1485 = 1
596 1485 = 4
1164 1485 = -3
909 1485 = 8
596 1537 = 4
1164 1537 = -4
909 1537 = 8
1164 596 = -4
909 596 = 4
909 1164 = 8
Код выглядит нормально. Вы проверили входные значения? В частности, я бы удалил 'booksCounter' и использовал' pin.length' вместо – SJuan76
Вы уверены, что заказ "Random"? Можете ли вы разместить пример ввода и вывода? – pcalcao
Вы сортируете алфавитно по ISBN, а не по названию, вы это знаете? Действительно ли они «случайно» упорядочены по ISBN? Что делает «getISBN»? возможно, эта функция не вернет правильные значения. – svinja