Сортировка выбора – это сортировка сравнения на месте. Он зацикливается и находит первое наименьшее значение, меняет его местами с первым элементом; зацикливается и снова находит второе наименьшее значение, меняет его местами со вторым элементом, повторяет третье, четвертое, пятое наименьшие значения и меняет их местами, пока все не будет в правильном порядке.
P.S Сортировка выбора неэффективна в больших списках
1. Объяснение
#unsorted data -> [10, 8, 99, 7, 1, 5, 88, 9] #1 -> [10, 8, 99, 7, 1, 5, 88, 9] -> [1, 8, 99, 7, 10, 5, 88, 9] #2 -> [1, 8, 99, 7, 10, 5, 88, 9] -> [1, 5, 99, 7, 10, 8, 88, 9] #3 -> [1, 5, 99, 7, 10, 8, 88, 9] -> [1, 5, 7, 99, 10, 8, 88, 9] #4 -> [1, 5, 7, 99, 10, 8, 88, 9] -> [1, 5, 7, 8, 10, 99, 88, 9] #5 -> [1, 5, 7, 8, 10, 99, 88, 9] -> [1, 5, 7, 8, 9, 99, 88, 10] #6 -> [1, 5, 7, 8, 9, 99, 88, 10] -> [1, 5, 7, 8, 9, 10, 88, 99] #7 -> [1, 5, 7, 8, 9, 10, 88, 99] -> [1, 5, 7, 8, 9, 10, 88, 99] #result : [1, 5, 7, 8, 9, 10, 88, 99]
Вот реализация сортировки выбора Java.
public static void sort(int[] input) { int inputLength = input.length; for (int i = 0; i < inputLength - 1; i++) { int min = i; // find the first, second, third, fourth... smallest value for (int j = i + 1; j < inputLength; j++) { if (input[j] < input[min]) { min = j; } } // swaps the smallest value with the position 'i' int temp = input[i]; input[i] = input[min]; input[min] = temp; //next pls } }
2. Пример сортировки выбора Java
Полный пример, демонстрирующий использование алгоритма сортировки выборки для сортировки простого набора данных.
package com.mkyong; import java.util.Arrays; public class SelectionSortExample { public static void main(String[] args) { int[] array = {10, 8, 99, 7, 1, 5, 88, 9}; selection_sort(array); System.out.println(Arrays.toString(array)); } private static void selection_sort(int[] input) { int inputLength = input.length; for (int i = 0; i < inputLength - 1; i++) { int min = i; // find the first, second, third, fourth... smallest value for (int j = i + 1; j < inputLength; j++) { if (input[j] < input[min]) { min = j; } } // swaps the smallest value with the position 'i' int temp = input[i]; input[i] = input[min]; input[min] = temp; //next pls } } }
Выход
[1, 5, 7, 8, 9, 10, 88, 99]
Рекомендации
Оригинал: “https://mkyong.com/java/java-selection-sort-example/”