0
Я пытаюсь сортировать массив чисел, используя Selectionsort и generics, и я чувствую себя потерянным. У меня есть интерфейс с public T [] sort и public void swap. Что мне нужно исправить, чтобы вернуть отсортированный массив целых чисел?Проверка моей функции сортировки
Мой код:
package sorting;
import java.lang.reflect.Array;
public class Selectionsort<T extends Comparable<T>> implements
ISelectionsort<T> {
private T[] array;
@Override
public T[] sort(T[] array) {
for (int i = 0; i < array.length; i++) {
int k = i;
for (int j = 0; j < array.length; j++) {
if ((array[j].compareTo(array[k]) == -1))
k = j;
}
if (k != i)
swap(array, i, k);
}
return null;
}
@Override
public void swap(T[] array, int i, int j) {
T tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
public static void main(String[] args) {
Selectionsort<Integer> ss = new Selectionsort<Integer>();
Integer[] array = { 4, 2, 9, 8 };
System.out.println(ss.sort(array));
}
}
Вам не нужно ничего возвращать, вы меняете элементы в исходном массиве, поэтому исходный массив сортируется, когда Selectionsort # sort завершает – hoaz
Почему ваш 'sort' возвращает' null', а не отсортированный массив? Почему он должен что-то возвращать, когда он фактически сортирует массив на месте? – 9000
Переменные - это указатели на часть памяти. Если вы используете свой метод, вы уже сортируете содержимое своей переменной. Ваш 'System.out' будет печатать 'null' в вашей консоли, потому что все, что вы делаете в своем методе, - это изменение позиции значений переменных. Вам придется пройти через ваш массив и извлечь свои значения 1 на 1 с помощью цикла 'for'. – DaGLiMiOuX