====== 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;
}
}
}
}