Итак, я заметил, когда я тестирую этот код:
public class SelectionSort{
public static void sorted(int[] array){
for (int i = 0; i < array.length - 1; i++) {
int key = array[i];
int index = i;
for (int j = 0; j < array.length; j++) {
if (array[j] < array[i]) {
key = array[j];
index = j;
}
}
int temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
//test function
public static void main(String[] args) {
int[] array = new int[]{4,3,6,7,1};
sorted(array);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
Я получаю вывод: {3,1,4,6,7}, который явно не отсортирован.Но когда я изменяю счетчик внутреннего цикла с for(int j = 0; j < array.length; j++)
на for(int j = 1; j < array.length; j++)
, я получаю правильный результат {1,3,4,6,7}.Любопытно, почему это происходит логически.