====== InsertSort - řazení vkládáním ====== ===== Princip ===== - začínáme vždy od druhého prvku seznamu(pole), eventuelně předpokládáme, že předchozí část seznamu(pole) je setřízená. - následující prvek zařadíme do již setřízené posloupnosti na správné místo - postupujeme odzadu a větší hodnoty posouváme. - bod 2 opakujeme do konce seznamu(pole). ===== Složitost ===== Asymptotická složitost InsertSort je O(n²), průměrná složitost je n²/4 a v nejlepším případě je dokonce lineární. Je efektivnější než většina O(n²) algoritmů. ===== Řešení ===== static void InsertSort (int[] npole) { int i; //index v poli int j; //index v poli int prvek; //aktualne zpracovavany prvek for (i=1;i=0&&npole[j]>prvek;j--) //vnitrni smycka - zarazujeme prvek { npole[j+1]=npole[j]; npole[j]=prvek; } } } ===== Souhrnný ukázkový příklad ===== package trideniI; public class Main { public static void main(String[] args) { int[] pole = {4,3,2,1}; //nestridene pole int index; //index pro pruchod pri vypisu InsertSort(pole); for (index=0;index=0&&npole[j]>prvek;j--) //vnitrni smycka - zarazujeme prvek { npole[j+1]=npole[j]; npole[j]=prvek; } } } }