selection sort java selection sort algorithm examples
Цей посібник пояснить все про сортування виділення в Java, а також алгоритм сортування виділення, код Java, реалізацію в Java та приклади Java:
Техніка сортування виділення - це метод, при якому найменший елемент масиву вибирається і замінюється першим елементом масиву. Далі другий найменший елемент масиву обмінюється другим елементом і навпаки.
=> Перегляньте тут, щоб побачити A-Z навчальних посібників з навчання Java тут.
Що ви дізнаєтесь:
Сортування виділення на Java
Таким чином найменший елемент масиву вибирається багаторазово і ставиться у належне положення, поки весь масив не буде відсортовано.
Для сортування виділення підтримуються два підмасиви:
- Відсортований підмасив: У кожній ітерації мінімальний елемент виявляється та розміщується у відповідному положенні. Цей підмасив відсортовано.
- Несортований підмасив: Решта елементи, які не сортуються.
Вибір сортування є простою та простою технікою сортування. Техніка передбачає лише пошук найменшого елемента в кожному пасу та розміщення його у правильному положенні. Сортування виділення ідеально підходить для менших наборів даних, оскільки ефективно сортує менший набір даних.
Таким чином, ми можемо сказати, що сортування вибору недоцільно для більших списків даних.
Алгоритм сортування вибору
Загальний алгоритм сортування відбору наведено нижче:
Сортування вибору (A, N)
Крок 1 : Повторіть кроки 2 і 3 для K = 1 до N-1
Крок 2 : Найменший режим дзвінка (A, K, N, POS)
Крок 3 :
Поміняйте місцями A (K) на A (POS)
(Кінець циклу)
Крок 4 : ВИХІД
Звичайні найменші (A, K, N, POS)
Крок 1 : (ініціалізувати) встановити najmanшийЕлемент = A (K)
Крок 2 : (ініціалізувати) встановити POS = K
Крок 3 :
для J = K + 1 до N -1, повторіть
якщо найменшийЕлемент> A (J)
встановити найменшийЕлемент = A (J)
встановити POS = J
(якщо кінець)
(Кінець циклу)
Крок 4 : повернути POS
Як бачите, під час обходу набору даних викликається процедура пошуку найменшого числа. Як тільки найменший елемент буде знайдено, його поміщають у потрібне положення.
як відкрити bin файли на android - -
Псевдокод для сортування виділення
Псевдокод для алгоритму сортування виділення наведено нижче.
Procedure selection_sort(array,N) array – array of items to be sorted N – size of array begin for I = 1 to N-1 begin set min = i for j = i+1 to N begin if array(j) Проілюструємо тепер сортування масиву за допомогою виділення сортування.
Приклад сортування за вибором
Розглянемо наступний масив, який потрібно відсортувати, як приклад сортування виділення.





Нижче наведено табличне зображення для ілюстрації:
безпечний очищувач реєстру для Windows 7
Несортований список Найменший елемент Відсортований список {17,10,7,29,2} два {} {17,10,7,29} 7 {два} {17,10,29} 10 {2,7} {17,29} 17 {2,7,10) {29} 29 {2,7,10,17} {} {2,7,10,17,29}
З ілюстрації ми бачимо, що з кожним проходом наступний найменший елемент ставиться у правильне положення відсортованого масиву. Загалом, щоб сортувати масив із N елементів, нам потрібно загалом проходи N-1.
Реалізація сортування за вибором в Java
Давайте продемонструємо програму Java для реалізації сортування виділення.
import java.util.*; class Main { static void sel_sort(int numArray()) { int n = numArray.length; // traverse unsorted array for (int i = 0; i Вихід:
Оригінальний масив: (7, 5, 2, 20, 42, 15, 23, 34, 10)
Відсортований масив: (2, 5, 7, 10, 15, 20, 23, 34, 42)

У наведеному вище прикладі Java ми неодноразово знаходимо найменший елемент у масиві і поміщаємо його в відсортований масив, поки весь масив не буде повністю відсортований.
Вибір Сортувати зв'язаний список на Java
Нижче наведено зв’язаний список, і ми повинні відсортувати його за допомогою виділення сортування. Для цього ми використаємо рекурсивний підхід сортування виділення. Замість того, щоб міняти місцями частини даних вузла місцями, ми поміняємо місця місцями місцями та перерівняємо покажчики.
Отже, якщо зв’язаний список подається наступним чином:


Нижче наведено програму Java, яка реалізує вищезазначене сортування.
// add a node to the beginning of the linked list static Node addNode( Node head_ref, int new_data) { // create a node Node newNode = new Node(); // assign data to node newNode.data = new_data; // link the node to linked list newNode.next = (head_ref); //head now points to new node (head_ref) = newNode; return head_ref; } // method to swap nodes static Node swapNodes( Node head_ref, Node curr_node1, Node curr_node2, Node prev_node) { // curr_node2 is new head head_ref = curr_node2; // realign links prev_node.next = curr_node1; // now swap next pointers of nodes Node temp = curr_node2.next; curr_node2.next = curr_node1.next; curr_node1.next = temp; return head_ref; } // sort the linked list using selection sort static Node Selection_Sort( Node head) { // only a single node in linked list if (head.next == null) return head; // minNode => node with minimum data value Node minNode = head; // prevMin => node previous to minNode Node prevMin = null; Node ptr; // traverse the list from head to last node for (ptr = head; ptr.next != null; ptr = ptr.next) { // check if current node is minimum if (ptr.next.data Вихід:
Оригінальний пов'язаний список:
7 9 3 5 1 11
Зв’язаний список після сортування:
1 3 5 7 9 11

Зверніть увагу, що у наведеній вище програмі ми перерівняли посилання вузлів замість того, щоб сортувати лише компонент даних вузла.
Часті запитання
Q # 1) Як працює сортування виділення?
Відповідь: Сортування виділень працює, підтримуючи два підмасиви. Мінімальний елемент із невідсортованого підмасиву розміщується у відповідному положенні у відсортованому підмасиві. Потім другий найнижчий елемент ставиться у належне положення. Таким чином, весь масив сортується, вибираючи мінімальний елемент під час кожної ітерації.
Q # 2) У чому складність сорту Вибору?
Відповідь: Загальна складність сортування відбору - O (nдва), що робить його алгоритмом неефективним для більших наборів даних. Інші методи сортування є більш ефективними.
Q # 3) Які переваги та недоліки сорту селекції?
Відповідь: Відбір сортування є методом сортування на місці, і тому він не вимагає додаткового зберігання для зберігання проміжних елементів.
Він ефективно працює на менших структурах даних, а також наборах даних, які майже сортуються.
Основним недоліком методики сортування виділення є те, що вона працює дуже погано, оскільки розмір структури даних збільшується. Це не тільки стає повільнішим, але і знижує ефективність.
Q # 4) Скільки свопів є в сортуванні виділення?
Відповідь: Техніка сортування відбору приймає мінімальну кількість свопів. Для кращого випадку, коли масив відсортовано, кількість обмінів у сортуванні виділення дорівнює 0.
Q # 5) Чи сортування виділення відбувається швидше, ніж сортування вставки?
Відповідь: Сортування вставки швидше та ефективніше, а також стабільне. Сортування виділення відбувається швидше лише для менших наборів даних та частково відсортованих структур.
Висновок
Сортування виділення - це техніка, яка працює шляхом вибору мінімального елемента під час обходу масиву. Для кожного проходу / ітерації вибирається наступний мінімальний елемент у наборі даних і розміщується у відповідному положенні.
Техніка сортування виділення працює ефективно, коли кількість елементів у наборі даних менша, але вона починає працювати погано, оскільки розмір набору даних зростає. Це стає неефективним у порівнянні з іншими подібними методами, такими як вставка.
У цьому посібнику ми застосували приклади сортування масивів та зв’язаних списків за допомогою виділення сортування.
=> Завітайте сюди, щоб побачити навчальну серію Java для всіх.
Рекомендована література
- Як відсортувати масив на Java - Підручник з прикладами
- Сортування виділення в C ++ із прикладами
- Підручник з довжини масиву Java із прикладами коду
- Метод сортування MongoDB () із прикладами
- Нерівний масив у Java - Підручник із прикладами
- Команда сортування Unix із синтаксисом, опціями та прикладами
- Зворотній масив у Java - 3 методи з прикладами
- Підручник JAVA для початківців: 100+ практичних відео-підручників Java