Выберите концепцию сортировки
Сортировка отбора также является алгоритмом сортировки обмена, который имеет определенное сходство с сортировкой пузырьков. Поэтому я лично считаю, что выбор сортировки может рассматриваться как улучшенный алгоритм для сортировки пузырьков. Его идея заключается в следующем:
Предположим, что массив ARR [] теперь отсортирован, и в нем есть элементы.
1 Сравните первый элемент (в Java, SPIC -sepcript 0) со вторым элементом. Если первое больше последнего, то это должно быть не самым маленьким, но мы не спешаем обменять, как сортировка пузырьков. Мы можем установить временную переменную A для хранения подписания этого самого маленького элемента. Затем мы продолжаем сравнивать самый маленький элемент с третьим элементом. Если он все еще не самый маленький, то мы изменяем значение a. Таким образом, до тех пор, пока сравнение с последним элементом не будет завершено, уверен, что должен быть индекс наименьшего элемента.
2. Если значение A не 0 (начальное значение, то есть подписание первого элемента), обменяйте два элемента с подписками A и 0.
3. Повторите приведенный выше процесс и запустите сравнение с элементом с помощью индекса 1 на этот раз, потому что наименьший элемент был размещен в положении с подписанием 0.
4. Таким образом, пока не останется только последний элемент, вы можете быть уверены, что этот элемент является самым большим.
5. Сортировка завершена.
Очевидно, что этот алгоритм также требует раундов сортировки N-1.
Следует отметить, что приведенное выше объяснение - это только способ найти минимальное значение каждый раз. На самом деле, вы также можете найти максимальное значение каждый раз, но вам нужно каждый раз класть его на хвост массива.
Код реализации Java:
SelectArray.java
пакет CH02; открытый класс selectArray {// array private long [] arr; // размер действительных данных в массиве Private Int Elems; // конструктор по умолчанию public selectArray () {arr = new Long [50]; } public selectArray (int max) {arr = new long [max]; } // вставить данные public void insert (long value) {arr [elems] = value; elems ++; } // отображать данные public void display () {for (int i = 0; i <elems; i ++) {System.out.print (arr [i]+""); } System.out.println (); } // Выберите Sort Public void selectsort () {int min = 0; длинный tmp = 0l; for (int i = 0; i <elems -1; i ++) {min = i; for (int j = i+1; j <elems; j ++) {if (arr [j] <arr [min]) {min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}Тестовый код:
пакет CH02; открытый класс TestSelectArray {public static void main (string [] args) {selectArray sarr = new SelectArray (); Sarr.insert (89); Sarr.insert (54); Sarr.insert (667); Sarr.insert (7); Sarr.insert (12); Sarr.insert (43); Sarr.insert (12); sarr.display (); sarr.selectsort (); sarr.display (); }} результат: