Insertion sort
Z Wikipedie, otevřené encyklopedie
Insertion sort (neboli řazení vkládáním) je jednoduchý řadicí algoritmus založený na porovnávání. Algoritmus Insertion Sort pracuje tak, že prochází prvky postupně a každý další nesetříděný prvek zařadí na správné místo do již setříděné posloupnosti.
Je to jeden z nejrychlejších algoritmů s kvadratickou časovou složitostí. Je asymptoticky pomalejší než pokročilé algoritmy jako třeba quicksort nebo mergesort, ale má jiné výhody.
Výhody [editovat]
- jednoduchá implementace
- efektivní na malých množinách
- efektivní na částečně seřazených množinách (běží v čase
, kde
je počet transpozic prvků množiny) - efektivnější než většina ostatních
algoritmů (selection sort, bubble sort), průměrný čas je
a v nejlepším případě je dokonce lineární - řadí stabilně (nemění vzájemné pořadí prvků se stejnými klíči)
- vyžaduje pouze
paměti (kromě vlastního vstupu) - je online algoritmem, tzn. dokáže řadit data tak, jak přicházejí na vstup
Princip [editovat]
- Posloupnost rozdělíme na seřazenou a neseřazenou tak, že seřazená obsahuje první prvek posloupnosti
- Z neseřazené části vybereme první prvek a zařadíme jej na správné místo v seřazené posloupnosti
- Prvky v seřazené posloupnosti posuneme o jednu pozici doprava
- Seřazenou část zvětšíme o jeden prvek. Naopak neseřazenou část o jeden prvek zleva zmenšíme
- Kroky 2-5 aplikujeme až do úplného seřazení neseřazené části
Algoritmus [editovat]
insertionSort(A)
pro i od 1 do počtu prvků opakuj:
hodnota = A[i];
j = i-1;
pokud j >= 0 a zároveň A[j] > hodnota opakuj:
A[j+1] = A[j];
j = j--;
A[j+1] = hodnota;

, kde
je počet transpozic prvků množiny)
algoritmů (
a v nejlepším případě je dokonce lineární
paměti (kromě vlastního vstupu)