Внутренний цикл for имеет несколько ошибок:
- j должен быть установлен равным i + 1 вместо i ,Это не ошибка, просто ненужное сравнение.
- Вы увеличиваете i вместо j .
- Условие также использует i вместо j . Он также должен включать последний элемент последовательности (убрать -1).
Может быть, просто небрежное копирование и вставка?
Это правильный код:
public static int[] selectionSort(int[] a) {
for(int i = 0; i < a.length-1; i++) {
int min = i;
for(int j = i+1; j< a.length; j++) {
if(a[min] > a[j])
min = j;
}
int temp = a[min];
a[min] = a[i];
a[i] = temp;
}
return a;
}