Úvod do algoritmu zoradenia

Úvod do algoritmu zoradenia

Vložiť triedenie je technika, ktorá funguje tak, že využíva triedený pod zoznam a nepretržite naň pridáva hodnotu z netriedeného zoznamu, kým nie je zoradený celý zoznam.





Algoritmus začína prvou položkou zoznamu ako zoradeným pod zoznamom. Potom porovná nasledujúce číslo s prvým. Ak je väčšia, vloží sa do prvého indexu. V opačnom prípade je ponechaný vo svojom indexe.





Tretia hodnota sa potom porovná s ostatnými dvoma a potom sa vloží do správneho indexu. Tento proces pokračuje, kým nie je zoradený celý zoznam.





Bližší pohľad na triedenie vkladania

Vyššie uvedený popis vám možno nedal zmysel. Príklad by vám mal pomôcť lepšie porozumieť.

Predpokladajme, že máte zoznam: [39, 6, 2, 51, 30, 42, 7].



Algoritmus identifikuje 39 ako prvú hodnotu triedeného sublistu. Vyhodnotenie sa potom presunie na druhú pozíciu.

Súvisiace články: Dynamické programovanie: príklady, bežné problémy a riešenia





6 sa potom porovná s 39. Pretože 6 je menej ako 39, 6 je vložené do prvej polohy a 39 do druhej. Nové poradie zoznamu je po prvom prechode teraz:

[6, 39, 2, 51, 30, 42, 7]





Hodnotenie sa teraz posúva na tretiu pozíciu. 2 sa porovná s poslednými dvoma číslami a potom sa vloží do správnej polohy. Nové poradie zoznamu je po druhom prechode teraz:

[2, 6, 39, 51, 30, 42, 7]

Pri treťom prechode je poradie zoznamu:

[2, 6, 39, 51, 30, 42, 7]

Tento postup sa opakuje, kým nie je zoradený celý zoznam.

Pozrite sa na nižšie uvedený diagram, ktorý sumarizuje tieto operácie:

Analýza algoritmu

Časová náročnosť vloženého triedenia je O (n2), rovnako ako bublinkové triedenie . Počet porovnaní v najhoršom prípade je súčet všetkých celých čísel od 1 do (n-1), čo predstavuje kvadratický súčet.

Implementácia kódu

Nasledujúci kód Python a Java ukazuje, ako môžete implementovať metódu vloženia.

Python:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Java:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

Lepšie kódovanie pomocou pseudokódu

Vyššie uvedené príklady kódov boli uvedené bez akéhokoľvek pseudokódu, na ktorý môžete odkazovať pri písaní tohto algoritmu v iných jazykoch. Väčšina programátorov (vrátane autora) rád beží na svoju klávesnicu potom, čo im bolo povedané „šepot“ o tom, ako program funguje.

Tento prístup je bohužiaľ náchylný na chyby, pretože logika programu je komplikovanejšia. Ako by ste chceli zvýšiť úroveň svojej programovacej hry tým, že sa naučíte používať pseudokód?

zdieľam zdieľam Tweet E -mail Čo je to pseudokód a ako z vás robí lepšieho vývojára?

Bojujete sa naučiť programovať? Naučte sa pracovať s kódom tým, že sa naučíte pseudokód. Čo je to však pseudokód a môže skutočne pomôcť?

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Java
  • Python
  • Návody na kódovanie
O autorovi Jerome Davidson(22 publikovaných článkov)

Jerome je spisovateľ štábu v MakeUseOf. Venuje sa článkom o programovaní a Linuxe. Je tiež nadšencom kryptomien a vždy má prehľad o krypto priemysle.

ako vykonať obnovu systému Windows 10
Viac od Jerome Davidsona

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber