selection sort c with examples
Поглиблений погляд на сортування виділення в C ++ із прикладами.
Як випливає з самої назви, техніка сортування виділення спочатку відбирає найменший елемент у масиві та замінює його першим елементом масиву.
Далі він міняє місцями другий найменший елемент масиву з другим елементом тощо. Таким чином, для кожного проходу вибирається найменший елемент у масиві та ставиться у належне положення, поки не буде відсортовано весь масив.
=> Ознайомтесь з Ідеальним навчальним посібником для C ++ тут.
Що ви дізнаєтесь:
- Вступ
- Загальний алгоритм
- Псевдокод для сортування вибору
- Ілюстрація
- Приклад С ++
- Приклад 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 : [ініціалізувати] встановити найменшийElem = A [K]
- Крок 2 : [ініціалізувати] встановити POS = K
- Крок 3 : для J = K + 1 до N -1, повторіть
якщо найменшийElem> A [J]
встановити найменшийElem = A [J]
встановити POS = J
[якщо кінець]
[Кінець циклу] - Крок 4 : повернути POS
Псевдокод для сортування вибору
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] Приклад для ілюстрації цього алгоритму сортування вибору наведено нижче.
Ілюстрація
Табличне зображення для цієї ілюстрації показано нижче:
Несортований список Найменший елемент Відсортований список {18,10,7,20,2} два {} {18,10,7,20} 7 {два} {18,10,20} 10 {2,7} {18.20} 18 {2,7,10) {двадцять} двадцять {2,7,10,18} {} {2,7,10,18,20}
З ілюстрації ми бачимо, що при кожному проході наступний найменший елемент ставиться у правильне положення в відсортованому масиві. З наведеної ілюстрації ми бачимо, що для сортування масиву з 5 елементів потрібно було чотири проходи. Це взагалі означає, що для сортування масиву з N елементів нам потрібно загалом проходи N-1.
Нижче наведено реалізацію алгоритму сортування вибору в C ++.
Приклад С ++
#include using namespace std; int findSmallest (int[],int); int main () { int myarray[10] = {11,5,2,20,42,53,23,34,101,22}; int pos,temp,pass=0; cout<<'
Input list of elements to be Sorted
'; for(int i=0;i<10;i++) { cout< Вихід:
Вхідний список елементів для сортування
11 5 2 20 42 53 23 34 101 22
Відсортований список елементів -
2 5 11 20 22 23 34 42 53 101
Кількість проходів, необхідних для сортування масиву: 10
Як показано у вищезазначеній програмі, ми розпочинаємо сортування виділення, порівнюючи перший елемент масиву з усіма іншими елементами масиву. В кінці цього порівняння найменший елемент масиву розміщується в першій позиції.
У наступному проході, використовуючи той самий підхід, наступний найменший елемент масиву розміщується у правильному положенні. Це триває до тих пір, поки не буде відсортовано N елементів або поки не буде відсортовано весь масив.
Приклад Java
Далі ми реалізуємо техніку сортування виділення на мові Java.
class Main { public static void main(String[] args) { int[] a = {11,5,2,20,42,53,23,34,101,22}; int pos,temp; System.out.println('
Input list to be sorted...
'); for(int i=0;i<10;i++) { System.out.print(a[i] + ' '); } for(int i=0;i<10;i++) { pos = findSmallest(a,i); temp = a[i]; a[i]=a[pos]; a[pos] = temp; } System.out.println('
printing sorted elements...
'); for(int i=0;i<10;i++) { System.out.print(a[i] + ' '); } } public static int findSmallest(int a[],int i) { int smallest,position,j; smallest = a[i]; position = i; for(j=i+1;j<10;j++) { if(a[j] Вихід:
Список вводу для сортування ...
11 5 2 20 42 53 23 34 101 22
друк відсортованих елементів ...
2 5 11 20 22 23 34 42 53 101
У наведеному вище прикладі Java ми застосовуємо ту саму логіку. Ми неодноразово знаходимо найменший елемент у масиві та поміщаємо його у відсортований масив, поки весь масив не буде повністю відсортований.
Таким чином, сортування виділення є найпростішим алгоритмом для реалізації, оскільки нам просто потрібно неодноразово знаходити наступний найменший елемент у масиві та поміняти його елементом у відповідному положенні.
Аналіз складності сорту відбору
Як видно з псевдокоду вище для сортування виділення, ми знаємо, що для сортування виділення потрібно два для циклів, вкладених один з одним, щоб завершити себе. Один цикл for перебирає всі елементи масиву, і ми знаходимо мінімальний індекс елемента, використовуючи інший цикл for, який вкладений всередину зовнішнього циклу for.
Отже, з огляду на розмір N вхідного масиву, алгоритм сортування виділення має такі значення часу та складності.
Найгірша складність часу O (n 2); O (n) свопи Найкраща складність часу O (n 2); O (n) свопи Середня часова складність O (n 2); O (n) свопи Складність простору O (1)
Складність часу O ( п два) в основному через використання двох для петель. Зверніть увагу, що техніка сортування виділення ніколи не займає більше обміну O (n) і є корисною, коли операція запису в пам'ять виявляється дорогою.
Висновок
Відбір сортування - це ще одна найпростіша техніка сортування, яку можна легко реалізувати. Вибір сортування працює найкраще, коли відомий діапазон значень, що підлягають сортуванню. Що стосується сортування структур даних із використанням сортування за вибором, ми можемо сортувати лише структуру даних, яка є лінійною та обмеженою.
Це означає, що ми можемо ефективно сортувати структури даних, такі як масиви, використовуючи сортування виділення.
У цьому підручнику ми детально обговорили сортування виділення, включаючи реалізацію сортування виділення за допомогою мов C ++ та Java. Логіка сортування виділення полягає в тому, щоб неодноразово знаходити найменший елемент у списку та розміщувати його у відповідному положенні.
У наступному підручнику ми детально дізнаємося про сортування вставки, яке, як кажуть, є більш ефективною технікою, ніж інші дві техніки, які ми обговорювали до цього часу, тобто сортування бульбашок та сортування виділення.
=> Перегляньте тут, щоб побачити A-Z з навчальних посібників з C ++ тут.
Рекомендована література
- Сортування оболонки в C ++ з прикладами
- Метод сортування MongoDB () із прикладами
- Команда сортування Unix із синтаксисом, опціями та прикладами
- Сортування міхура в C ++ із прикладами
- Сортування вставки в C ++ із прикладами
- Об’єднати сортування в C ++ із прикладами
- Сортування купи в C ++ з прикладами
- Швидке сортування в C ++ із прикладами