====== SelectSort - řazení výběrem ====== ===== Princip ===== - nalezneme prvek s nejmenší hodnotou v seznamu(poli) - zaměníme jej s prvkem na první pozici - na první pozici je nyní správný prvek, zbytek seznamu(pole) se uspořádá opakováním kroků 1 a 2 pro zbylé prvky ===== Složitost ===== Asymptotická složitost SelectSort je O(n²). ===== Řešení ===== ==== Varianta 1 ==== SelectSort s postupem popsaným v princip, tj. hledám nejmenší prvek a přesunuji jej na první pozici a celé opakuji pro pole zkrácené odpředu. static void SelectSort1 (int[] npole) { int i; //pocet opakovani vyberu int j; //index v poli int pozNejm; //pozice nejmensiho prvku int pom; //pomocna promenna pro vymenu for (i=0;i ==== Varianta 2 ==== SelectSort s obráceným postupem, tj. hledám největší prvek a přesunuji jej nakonec a celé opakuji pro pole zkrácené odzadu. static void SelectSort2 (int[] npole) { int i; //pocet opakovani vyberu int j; //index v poli int pozNejv; //pozice nejvetsiho prvku int pom; //pomocna promenna pro vymenu for (i=npole.length-1;i<0;i--) //vnejsi smycka { pozNejv = i; for(j=i;jnpole[pozNejv])pozNejv = j; } if (i!=pozNejv) { pom=npole[i]; npole[i]=npole[pozNejv]; npole[pozNejv]=pom; } } } ===== Souhrnný ukázkový příklad ===== package trideniS; public class Main { public static void main(String[] args) { int[] pole = {4,3,2,1}; //nestridene pole int index; //index pro pruchod pri vypisu System.out.println("Trideni - nejmensi nazacatek"); SelectSort1(pole); for (index=0;indexnpole[pozNejv])pozNejv = j; } if (i!=pozNejv) { pom=npole[i]; npole[i]=npole[pozNejv]; npole[pozNejv]=pom; } } } }