V tomto článku budeme diskutovať o algoritme triedenia vloženia. Pracovný postup triedenia vkladania je tiež jednoduchý. Tento článok bude pre študentov veľmi užitočný a zaujímavý, pretože sa pri skúškach môžu stretnúť s otázkou vkladania. Preto je dôležité diskutovať o téme.
Vkladanie tried funguje podobne ako triedenie hracích kariet v rukách. Predpokladá sa, že prvá karta je už v kartovej hre zoradená a potom vyberieme netriedenú kartu. Ak je vybratá netriedená karta väčšia ako prvá karta, umiestni sa na pravú stranu; v opačnom prípade bude umiestnený na ľavej strane. Podobne sa vezmú všetky neroztriedené karty a umiestnia sa na svoje presné miesto.
Rovnaký prístup sa používa pri triedení vkladania. Myšlienka triedenia vloženia je taká, že najprv vezmete jeden prvok a iterujete ho cez triedené pole. Hoci sa používa jednoducho, nie je vhodný pre veľké súbory údajov, pretože časová zložitosť triedenia vkladania v priemernom prípade a najhoršom prípade je O(n2) , kde n je počet položiek. Triedenie vkladania je menej efektívne ako iné triediace algoritmy, ako napríklad triedenie haldy, rýchle triedenie, triedenie zlúčením atď.
Triedenie vkladania má rôzne výhody, ako napr.
- Jednoduchá implementácia
- Efektívne pre malé súbory údajov
- Adaptívny, t. j. je vhodný pre súbory údajov, ktoré sú už podstatne zoradené.
Teraz sa pozrime na algoritmus triedenia vkladania.
Algoritmus
Jednoduché kroky na dosiahnutie zoradenia vloženia sú uvedené nasledovne -
Krok 1 - Ak je prvok prvým prvkom, predpokladajme, že je už zoradený. Návrat 1.
java pripojiť sa k mysql
Krok 2 - Vyberte ďalší prvok a uložte ho samostatne do a kľúč.
Krok 3 - Teraz porovnajte kľúč so všetkými prvkami v triedenom poli.
Krok 4 - Ak je prvok v zoradenom poli menší ako aktuálny prvok, prejdite na ďalší prvok. V opačnom prípade posuňte väčšie prvky v poli doprava.
Krok 5 - Vložte hodnotu.
Krok 6 - Opakujte, kým sa pole neroztriedi.
Fungovanie algoritmu triedenia vkladania
Teraz sa pozrime na fungovanie algoritmu triedenia vkladania.
Aby sme pochopili fungovanie algoritmu triedenia vloženia, zoberme si nezoradené pole. Pomocou príkladu bude jednoduchšie pochopiť triedenie vkladania.
Nech sú prvky poľa -
Na začiatku sa prvé dva prvky porovnajú podľa typu vloženia.
Tu je 31 väčšie ako 12. To znamená, že oba prvky sú už vo vzostupnom poradí. Takže zatiaľ je 12 uložených v triedenom podpole.
Teraz prejdite na ďalšie dva prvky a porovnajte ich.
Tu je 25 menšie ako 31. Takže 31 nie je v správnej polohe. Teraz zameňte 31 za 25. Spolu so zámenou ho triedenie vložením skontroluje aj so všetkými prvkami v triedenom poli.
Zoradené pole má zatiaľ iba jeden prvok, t. j. 12. Čiže 25 je väčšie ako 12. Zoradené pole teda zostane zoradené aj po výmene.
Teraz sú dva prvky v zoradenom poli 12 a 25. Prejdite vpred na ďalšie prvky, ktoré sú 31 a 8.
31 aj 8 nie sú zoradené. Tak ich vymeňte.
Po výmene sú prvky 25 a 8 neroztriedené.
Tak ich vymeňte.
Teraz sú prvky 12 a 8 nezoradené.
Tak si ich vymeňte aj vy.
Teraz má zoradené pole tri položky, ktoré sú 8, 12 a 25. Prejdite na ďalšie položky, ktoré sú 31 a 32.
Preto sú už zoradené. Teraz triedené pole obsahuje 8, 12, 25 a 31.
Prejdite na ďalšie prvky, ktoré sú 32 a 17.
17 je menšie ako 32. Takže ich vymeňte.
Zámenou sa 31 a 17 netriedia. Tak si ich vymeňte aj vy.
Teraz zámenou sú 25 a 17 nezoradené. Takže vykonajte výmenu znova.
Teraz je pole úplne zoradené.
Zložitosť zoradenia vkladania
Teraz sa pozrime na časovú zložitosť triedenia vkladania v najlepšom prípade, priemernom prípade a v najhoršom prípade. Uvidíme aj priestorovú náročnosť vkladania sort.
1. Časová zložitosť
Prípad | Časová zložitosť |
---|---|
Najlepší prípad | O(n) |
Priemerný prípad | O(n2) |
V najhoršom prípade | O(n2) |
2. Zložitosť priestoru
Priestorová zložitosť | O(1) |
Stabilný | ÁNO |
- Priestorová zložitosť triedenia vkladania je O(1). Je to preto, že pri triedení vkladania je na výmenu potrebná ďalšia premenná.
Implementácia triedenia vkladania
Teraz sa pozrime na programy na vkladanie v rôznych programovacích jazykoch.
Program: Napíšte program na implementáciu triedenia vkladania v jazyku C.
#include void insert(int a[], int n) /* function to sort an aay with insertion sort */ { int i, j, temp; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 && temp <= 17 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[], int n) function print array i; for (i="0;" i < n; i++) printf('%d ', a[i]); main() a[]="{" 12, 31, 25, 8, 32, }; n="sizeof(a)" sizeof(a[0]); printf('before sorting are - '); printarr(a, n); insert(a, printf(' after return 0; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-18.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in python.</p> <pre> def insertionSort(a): # Function to implement insertion sort for i in range(1, len(a)): temp = a[i] # Move the elements greater than temp to one position #ahead from their current position j = i-1 while j >= 0 and temp <a[j] : a[j + 1]="a[j]" j="j-1" def printarr(a): # function to print the array for i in range(len(a)): (a[i], end=" " ) a="[70," 15, 2, 51, 60] print('before sorting elements are - ') printarr(a) insertionsort(a) print(' after < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-19.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in C++ language.</p> <pre> #include using namespace std; void insert(int a[], int n) /* function to sort an aay with insertion sort */ { int i, j, temp; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 && temp <= 2 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[], int n) function print array i; for (i="0;" i < n; i++) cout << a[i] <<' '; main() a[]="{" 89, 45, 35, 8, 12, }; n="sizeof(a)" sizeof(a[0]); cout<<'before sorting are - '<<endl; printarr(a, n); insert(a, cout<<' after return 0; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-20.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in C# language.</p> <pre> using System; class Insertion { static void insert(int[] a) /* function to sort an aay with insertion sort */ { int i, j, temp; int n = a.Length; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 && temp <= 12 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } static void printarr(int[] a) function print array int i; n="a.Length;" for (i="0;" i < n; i++) console.write(a[i] + ' '); main() int[] a="{" 98, 54, 53, 18, 21, }; console.write('before sorting are - '); printarr(a); insert(a); console.write(' after pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-21.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in Java.</p> <pre> public class Insert { void insert(int a[]) /* function to sort an aay with insertion sort */ { int i, j, temp; int n = a.length; for (i = 1; i <n; i++) { temp="a[i];" j="i" - 1; while(j>=0 && temp <= 22 a[j]) * move the elements greater than temp to one position ahead from their current position* { a[j+1]="a[j];" j="j-1;" } void printarr(int a[]) function print array int i; n="a.length;" for (i="0;" i < n; i++) system.out.print(a[i] + ' '); public static main(string[] args) a[]="{" 92, 50, 5, 20, 11, }; insert i1="new" insert(); system.out.println(' before sorting are - i1.printarr(a); i1.insert(a); system.out.println(' after system.out.println(); pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-22.webp" alt="Insertion Sort Algorithm"> <p> <strong>Program:</strong> Write a program to implement insertion sort in PHP.</p> <pre> <?php $a = array( 92, 50, 5, 20, 11, 22 ); function printArray($a) { for($i = 0; $i < 6; $i++) { print_r($a[$i]); echo ' '; } } echo 'Before sorting array elements are - <br>'; printArray($a); for ($i = 1; $i = 0 && $temp <= $a[$j]) * move the elements greater than temp to one position ahead from their current position* { $a[$j+1]="$a[$j];" $j="$j-1;" } echo ' <br> After sorting array elements are - <br>'; printArray($a); ?> </=></pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/03/insertion-sort-algorithm-23.webp" alt="Insertion Sort Algorithm"> <p>So, that'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 algorithm's complexity, working, and implementation in different programming languages.</p> <hr></=></n;></pre></=></n;></pre></=></n;></pre></a[j]></pre></=></n;>
Výkon:
Tak, to je o článku všetko. Dúfam, že článok bude pre vás užitočný a poučný.
Tento článok nebol obmedzený len na algoritmus. Diskutovali sme aj o zložitosti, fungovaní a implementácii algoritmu v rôznych programovacích jazykoch.
=>=>=>=>