1. Описание алгоритма
Выберите «Сортировка»: Например, в неупорядоченном массиве длины n, траверс N Данных в первой поездке, выясните наименьшее значение и обменивайте его с первым элементом, вторая поездка проходит оставшиеся данные N-1, выясните наименьшее значение и обменивайте его со вторым элементом ... N-1-й пересекает оставшиеся данные, узнайте о наименьшем значении и обмене элементом N-1-й, и Selection завершен.
Следующие 5 неупорядоченных данных используются в качестве примеров:
56 12 80 91 20 (процесс отбора первой поездки уточняется только в статье)
1 -я поездка: 12 56 80 91 20
2 -я поездка: 12 20 80 91 56
Поездка 3: 12 20 56 91 80
4 -я поездка: 12 20 56 80 91
2. Анализ алгоритма
Средняя сложность времени: O (N2)
Сложность пространства: O (1) (для индексов обмена и записи)
Стабильность: нестабильна (например, первые [5] и [3] обмениваются на первом путешествии последовательности [5, 5, 3], что приводит к первым 5 первым 5 за вторым 5)
3. Реализация алгоритма
открытый класс selectionsort {public static void main (string [] args) {int len = 15; int [] ary = new int [len]; Случайный случайный = new Random (); for (int j = 0; j <len; j ++) {ary [j] = random.nextint (1000); } System.out.println ("------------------"); // ary = new int [] {10,9,8,7,6,5,4,3,2,1}; // тестовые обмены // ary = new int [] {1,2,3,4,5,6,7,8,10,9}; // тестовые обмены на (int j = 0; j <ary.length; j ++) {System.out.print (ary [j]+""); } selectDesc (ary); selectASC (ary); }/ * * Выберите Sort: Deconding */static void selectDesc (int [] ary) {int comparecount = 0; // Сравнение времени int ChangeCount = 0; // Количество обменов int len = ary.length; int maxvalueIndex = -1; // Записать индекс минимального значения после раунда сравнений для (int i = 0; i <len - 1; i ++) {maxValueIndex = i; // от 0 для (int j = i+1; j <len; j ++) {if (ary [maxvalueIndex] <ary [j]) {maxValueIndex = j; // Записать более крупный индекс сравнение ++; }} // System.out.println ("minvalueIndex ==" + maxValueIndex); if (maxvalueIndex! = i) {// Если индекс отличается от записи слева, обменен [i] = ary [maxValueIndex]+(ary [maxValueIndex] = ary [i]) * 0; // Один шаг xagnecount ++; }} System.out.println("/n------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. (int i = 0; i <len - 1; i ++) {minindex = i; ary [i] = ary [minindex]+(ary [minindex] = ary [i]) * 0; System.out.println("/n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- compareCount + ", number of exchanges" + changeCount); for (int j = 0; j <ary.length; j ++) {System.out.print (ary [j]+""); }}}Печать
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.