Метод рекурсивной сортировки, который я написал ниже, печатает адрес ("[I @ 7852e922") при использовании типичного sout, я полагаю, что это связано с моими возвращениями в sort (). Я пытался сделать метод недействительным, но это, похоже, не работает, потому что мне нужно удалить возвращаемые данные. Однако, когда я наконец заменяю его этим беспорядком, он распечатывает массив без сортировки, поэтому мой метод оказывается неэффективным:
System.out.println(Arrays.toString(sort(array2, array2.length-1)));
Пожалуйста, будьте спокойны со мной, потому что я серьезно боролся за программирование / рекурсию из-за плохой подготовки в моих предпосылках и выучил типичный пузырь за 10 минут до написания этого. Вот вся моя тестовая программа:
TL; DR: Что не так с моим методом сортировки и как его распечатать?
public static void main(String[] args) {
int array2[] = new int[]{1, 3, 5, 2, 4};
System.out.println(Arrays.toString(sort(array2, array2.length-1)));
}
static public int[] sort(int[] array, int n) {
int i = array[n];
int j = i-1;
int temp;
if(n == 0) {
return array;
} else if(i < j) {
temp = i;
i = j;
j = temp;
return sort(array, n - 1);
} else {
return sort(array, n - 1);
}
}
Спасибо!
РЕДАКТИРОВАТЬ: После обратной связи, это то, что мне осталось. Тест работает отлично, распечатывает мой отсортированный массив. Я обнаружил, что, глядя на код слишком долго, я склонен путать i с x [i]. Тем не менее, у меня все еще есть проблемы, избегая использования Arrays.toString () или переходя на void sort (). Я буду придерживаться этого, если придется. Сказав это, я ценю любую дальнейшую помощь.
public static void main(String[] args) {
int array2[] = new int[]{1, 3, 5, 2, 4};
System.out.println(Arrays.toString(sort(array2, array2.length - 1)));
}
static public int[] sort(int[] array, int lastIndex) {
int j = lastIndex - 1;
int temp;
if (lastIndex == 0) {
return array;
} else if (array[lastIndex] < array[j]) {
temp = array[lastIndex];
array[lastIndex] = array[j];
array[j] = temp;
return sort(array, lastIndex - 1);
} else if (array[lastIndex] > array[j]) {
return sort(array, lastIndex - 1);
}
return array;
}