Сортировка выбором — это простой алгоритм сортировки. Он работает, перебирая массив, и в этот цикл вложен еще один цикл, который опережает на 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), что означает, что алгоритм постоянен.

[Репозиторий GitHub]