logo

Алгоритм сортування вибору

У цій статті ми обговоримо алгоритм сортування вибору. Робоча процедура сортування відбору також проста. Ця стаття буде дуже корисною та цікавою для студентів, оскільки на іспитах вони можуть зіткнутися з відбором. Тому важливо обговорити тему.

Під час сортування вибором найменше значення серед невідсортованих елементів масиву вибирається під час кожного проходу та вставляється у відповідну позицію в масиві. Це також найпростіший алгоритм. Це алгоритм сортування порівняння на місці. У цьому алгоритмі масив ділиться на дві частини, перша – це відсортована частина, а інша – невідсортована частина. Спочатку відсортована частина масиву порожня, а невідсортованою є заданий масив. Відсортовану частину розміщують ліворуч, а невідсортовану – праворуч.

Під час сортування за вибором перший найменший елемент вибирається з несортованого масиву та розміщується на першій позиції. Після цього вибирається другий найменший елемент і розміщується на другій позиції. Процес триває, доки масив не буде повністю відсортований.

Середня та найгірша складність сортування вибору становить O(n2) , де п це кількість предметів. Через це він не підходить для великих наборів даних.

Сортування вибору зазвичай використовується, коли -

  • Невеликий масив підлягає сортуванню
  • Вартість обміну не має значення
  • Обов'язкова перевірка всіх елементів

Тепер розглянемо алгоритм сортування вибору.

Алгоритм

 SELECTION SORT(arr, n) Step 1: Repeat Steps 2 and 3 for i = 0 to n-1 Step 2: CALL SMALLEST(arr, i, n, pos) Step 3: SWAP arr[i] with arr[pos] [END OF LOOP] Step 4: EXIT SMALLEST (arr, i, n, pos) Step 1: [INITIALIZE] SET SMALL = arr[i] Step 2: [INITIALIZE] SET pos = i Step 3: Repeat for j = i+1 to n if (SMALL > arr[j]) SET SMALL = arr[j] SET pos = j [END OF if] [END OF LOOP] Step 4: RETURN pos 

Робота алгоритму сортування вибору

Тепер давайте подивимося, як працює алгоритм сортування вибору.

Щоб зрозуміти роботу алгоритму сортування Selection, давайте візьмемо несортований масив. На прикладі буде простіше зрозуміти сортування вибору.

Нехай елементи масиву -

вибір Алгоритм сортування

Тепер, для першої позиції в сортованому масиві, весь масив потрібно сканувати послідовно.

Наразі, 12 зберігається на першій позиції, після пошуку в усьому масиві виявлено, що 8 є найменшим значенням.

java порожня
вибір Алгоритм сортування

Отже, поміняйте місцями 12 на 8. Після першої ітерації 8 з’явиться на першій позиції в сортованому масиві.

вибір Алгоритм сортування

Для другої позиції, де зараз зберігається 29, ми знову послідовно скануємо решту елементів несортованого масиву. Після сканування ми виявили, що 12 є другим найнижчим елементом у масиві, який має бути на другій позиції.

вибір Алгоритм сортування

Тепер поміняйте 29 на 12. Після другої ітерації 12 з’явиться на другій позиції в сортованому масиві. Отже, після двох ітерацій два найменших значення розміщуються на початку впорядкованим чином.

вибір Алгоритм сортування

Той самий процес застосовується до решти елементів масиву. Зараз ми показуємо графічне представлення всього процесу сортування.

вибір Алгоритм сортування

Тепер масив повністю відсортований.

Складність сортування відбору

Тепер давайте подивимося на часову складність сортування в найкращому, середньому випадку та в гіршому випадку. Ми також побачимо просторову складність сортування відбору.

1. Складність часу

Справа Складність часу
Кращий випадок O(n2)
Середній випадок O(n2)
Найгірший випадок O(n2)
    Найкращий варіант складності -Це відбувається, коли сортування не потрібно, тобто масив уже відсортовано. Оптимальна часова складність сортування вибору O(n2) .Середня складність справи -Це відбувається, коли елементи масиву розташовані в перемішаному порядку, який неправильно зростає та спадає. Середня часова складність сортування відбору становить O(n2) .Найгірша складність -Це відбувається, коли елементи масиву потрібно відсортувати у зворотному порядку. Це означає, що ви повинні відсортувати елементи масиву в порядку зростання, але його елементи розташовані в порядку спадання. Найгірша часова складність сортування вибору O(n2) .

2. Просторова складність

Космічна складність О(1)
Стабільний ТАК
  • Просторова складність сортування вибору дорівнює O(1). Це тому, що при сортуванні вибору потрібна додаткова змінна для заміни.

Реалізація сортування вибору

Тепер давайте подивимося на програми сортування вибору на різних мовах програмування.

програма: Напишіть програму для реалізації сортування вибором мовою C.

 #include void selection(int arr[], int n) { int i, j, small; for (i = 0; i <n-1; 17 i++) one by move boundary of unsorted subarray { small="i;" minimum element in array for (j="i+1;" j < n; j++) if (arr[j] arr[small]) swap the with first int temp="arr[small];" arr[small]="arr[i];" arr[i]="temp;" } void printarr(int a[], n) * function to print i; (i="0;" i printf('%d ', a[i]); main() a[]="{" 12, 31, 25, 8, 32, }; n="sizeof(a)" sizeof(a[0]); printf('before sorting elements are - 
'); printarr(a, n); selection(a, printf('
after return 0; pre> <p> <strong>Output:</strong> </p> <p>After the execution of above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-7.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in C++ language.</p> <pre> #include using namespace std; void selection(int arr[], int n) { int i, j, small; for (i = 0; i <n-1; 15 i++) one by move boundary of unsorted subarray { small="i;" minimum element in array for (j="i+1;" j < n; j++) if (arr[j] arr[small]) swap the with first int temp="arr[small];" arr[small]="arr[i];" arr[i]="temp;" } void printarr(int a[], n) * function to print i; (i="0;" i cout<< a[i] <<' '; main() a[]="{" 80, 10, 29, 11, 8, 30, }; n="sizeof(a)" sizeof(a[0]); 'before sorting elements are - '<<endl; printarr(a, n); selection(a, '
after return 0; pre> <p> <strong>Output:</strong> </p> <p>After the execution of above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-8.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in C# language.</p> <pre> using System; class Selection { static void selection(int[] arr) { int i, j, small; int n = arr.Length; for (i = 0; i <n-1; i++) one by move boundary of unsorted subarray { small="i;" minimum element in array for (j="i+1;" j < n; j++) if (arr[j] arr[small]) swap the with first int temp="arr[small];" arr[small]="arr[i];" arr[i]="temp;" } static void printarr(int[] a) * function to print i; n="a.Length;" (i="0;" i console.write(a[i] + ' '); main() int[] a="{" 85, 50, 29, 18, 7, 30, 3}; console.write('before sorting elements are - printarr(a); selection(a); console.write('
after pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-9.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in python.</p> <pre> def selection(a): # Function to implement selection sort for i in range(len(a)): # Traverse through all array elements small = i # minimum element in unsorted array for j in range(i+1, len(a)): if a[small] &gt; a[j]: small = j # Swap the found minimum element with # the first element a[i], a[small] = a[small], a[i] def printArr(a): # function to print the array for i in range(len(a)): print (a[i], end = &apos; &apos;) a = [69, 14, 1, 50, 59] print(&apos;Before sorting array elements are - &apos;) printArr(a) selection(a) print(&apos;
After sorting array elements are - &apos;) selection(a) printArr(a) </pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-10.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in Java.</p> <pre> public class Selection { void selection(int a[]) /* function to sort an array with selection sort */ { int i, j, small; int n = a.length; for (i = 0; i <n-1; 21 i++) { small="i;" minimum element in unsorted array for (j="i+1;" j < n; j++) if (a[j] a[small]) swap the with first int temp="a[small];" a[small]="a[i];" a[i]="temp;" } void printarr(int a[]) * function to print i; n="a.length;" (i="0;" i system.out.print(a[i] + ' '); public static main(string[] args) a[]="{" 91, 49, 4, 19, 10, }; selection i1="new" selection(); system.out.println('
before sorting elements are - i1.printarr(a); i1.selection(a); system.out.println('
after system.out.println(); pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-11.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in PHP.</p> <pre> <?php function selection(&$a, $n) /* function to sort an array with selection sort */ { for ($i = 0; $i < $n; $i++) { $small = $i; //minimum element in unsorted array for ($j = $i+1; $j < $n; $j++) if ($a[$j] < $a[$small]) $small = $j; // Swap the minimum element with the first element $temp = $a[$small]; $a[$small] = $a[$i]; $a[$i] = $temp; } } function printArray($a, $n) { for($i = 0; $i < $n; $i++) { print_r($a[$i]); echo ' '; } } $a = array( 90, 48, 3, 18, 9, 20 ); $n = count($a); echo 'Before sorting array elements are - <br>&apos;; printArray($a, $n); selection($a, $n); echo &apos; <br> After sorting array elements are - <br>&apos;; printArray($a, $n); ?&gt; </pre> <p> <strong>Output:</strong> </p> <p>After the execution of above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-12.webp" alt="selection Sort Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <p>This article was not only limited to the algorithm. We have also discussed the Selection sort complexity, working, and implementation in different programming languages.</p> <hr></n-1;></pre></n-1;></pre></n-1;></pre></n-1;>

Вихід:

вибір Алгоритм сортування

програма: Напишіть програму для реалізації сортування вибором на Java.

 public class Selection { void selection(int a[]) /* function to sort an array with selection sort */ { int i, j, small; int n = a.length; for (i = 0; i <n-1; 21 i++) { small="i;" minimum element in unsorted array for (j="i+1;" j < n; j++) if (a[j] a[small]) swap the with first int temp="a[small];" a[small]="a[i];" a[i]="temp;" } void printarr(int a[]) * function to print i; n="a.length;" (i="0;" i system.out.print(a[i] + \' \'); public static main(string[] args) a[]="{" 91, 49, 4, 19, 10, }; selection i1="new" selection(); system.out.println(\'
before sorting elements are - i1.printarr(a); i1.selection(a); system.out.println(\'
after system.out.println(); pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-11.webp" alt="selection Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement selection sort in PHP.</p> <pre> <?php function selection(&$a, $n) /* function to sort an array with selection sort */ { for ($i = 0; $i < $n; $i++) { $small = $i; //minimum element in unsorted array for ($j = $i+1; $j < $n; $j++) if ($a[$j] < $a[$small]) $small = $j; // Swap the minimum element with the first element $temp = $a[$small]; $a[$small] = $a[$i]; $a[$i] = $temp; } } function printArray($a, $n) { for($i = 0; $i < $n; $i++) { print_r($a[$i]); echo \' \'; } } $a = array( 90, 48, 3, 18, 9, 20 ); $n = count($a); echo \'Before sorting array elements are - <br>&apos;; printArray($a, $n); selection($a, $n); echo &apos; <br> After sorting array elements are - <br>&apos;; printArray($a, $n); ?&gt; </pre> <p> <strong>Output:</strong> </p> <p>After the execution of above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/65/selection-sort-algorithm-12.webp" alt="selection Sort Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <p>This article was not only limited to the algorithm. We have also discussed the Selection sort complexity, working, and implementation in different programming languages.</p> <hr></n-1;>

Вихід:

Після виконання наведеного вище коду результатом буде -

вибір Алгоритм сортування

Отже, це все про статтю. Сподіваюся, стаття буде для вас корисною та інформативною.

Ця стаття не обмежилася лише алгоритмом. Ми також обговорили складність сортування Selection, роботу та реалізацію в різних мовах програмування.