====== MergeSort ====== ===== Princip ===== - rozdělíme seznam(pole) na dva(dvě) přibližně stejné velikosti - oba seznamy(pole) seřadíme - seřazené seznamy(pole) spojíme (postupně porovnáváme oba seznamy(pole) a do výsledného zařazujeme menší prvky, nakonec přidáme zbytek prvního nebo druhého). ===== Složitost ===== Asymptotická složitost MergeSort je O(n log n). ===== Řešení ===== ==== Varianta 1 ==== MergeSort pomocí rekurze. static int [] MergeSort (int[] npole) { if (npole.length==1) return npole; else { int stred; //stred pole int[] levacast; //leva cast int[] pravacast; //prava cast int i; //index v poli stred=npole.length/2; levacast = new int[stred]; pravacast = new int[npole.length-stred]; for (i=0;i ==== Varianta 2 ==== MergeSort nerekurzivně - viz přednáška.