Сортировка выбором — это простой алгоритм сортировки. Он работает, перебирая массив, и в этот цикл вложен еще один цикл, который опережает на 1, поэтому, когда первый цикл равен 1, второй цикл будет равен 2. В первом цикле мы инициализируем переменную с именем min и устанавливаем ее равен я.
public int[] selectionSort(int[] arrayToSort) { for (int i = 0; i < arrayToSort.length; i++) { int min = i; for (int j = i + 1; j < arrayToSort.length; j++) { } } return arrayToSort; }
Затем он сравнивает два числа во втором цикле, и если второе число меньше текущего минимума, мы сохраняем его как новый минимум.
public int[] selectionSort(int[] arrayToSort) { if (arrayToSort.length < 1) return arrayToSort; for (int i = 0; i < arrayToSort.length; i++) { int min = i; for (int j = i + 1; j < arrayToSort.length; j++) { if (arrayToSort[j] < arrayToSort[min]) { min = j; } } } return arrayToSort; }
Итак, теперь у нас есть информация, необходимая для фактического переупорядочения массива. Таким образом, мы сохраним значение текущего индекса, затем установим значение нового минимума, а затем установим, где минимум был значением индекса, который мы сохранили. Так что мы просто поменяли их местами.
public int[] selectionSort(int[] arrayToSort) { if (arrayToSort.length < 1) return arrayToSort; for (int i = 0; i < arrayToSort.length; i++) { int min = i; for (int j = i + 1; j < arrayToSort.length; j++) { if (arrayToSort[j] < arrayToSort[min]) { min = j; } } int temp = arrayToSort[i]; arrayToSort[i] = arrayToSort[min]; arrayToSort[min] = temp; } return arrayToSort; }
И это алгоритм сортировки выбором в Java. Обозначение O этого алгоритма равно 0 (n²), так как наш внешний цикл выполняется n раз, а наш внутренний цикл выполняется n раз для каждой итерации внешнего цикла, что дает нам n² циклов. Таким образом, этот алгоритм работает за 0(n²), также известное как квадратичное время, потому что если бы в нашем цикле было 10 элементов, он зациклился бы 100 раз (10²). Это медленный алгоритм, время выполнения долгое. Но его пространственная сложность (использование памяти) хороша, она равна 0 (1), что означает, что алгоритм постоянен.