Selection sort (zkráceně Selectsort) je jednoduchý algoritmus určený k řazení metodou "výběru" prvku.
Postupně procházím celou posloupnost prvků. V každém kroku hledám nejmenší/největší prvek od dané pozice až po konec pole. Pokud ho najdu, oba prvky prohodím. Na aktuální pozici mám tedy správný prvek a mohu přejít o krok dál. Pokud se dostanu na konec posloupnosti, pak je posloupnost již seřazená.
V tomto algoritmu dostanu dostanu jedním přehozením vždy minimálně jeden prvek na správnou pozici. Oproti Bubble sort si tedy ušetřím poměrně hodně zbytečných přesunů.
Začátek algoritmu:
import java.io.*;
public class SelectionSort{
public static int PocetVymen;
Vygenerování náhodné řady zadané velikosti a její vypsání do konzole:
public static void main(String args[]){
int[] rada;
int i,j,n,pom;
System.out.print("\n\n\tZadej pocet prvku rady:\t");
n=ctiInt();
rada = new int[n];
Rady.nesetridena(rada,30);
System.out.println("\n\tProgram bude radit nasledujici radu pomoci algoritmu Selection Sort.");
for (i=0; i < rada.length; i++)
System.out.print(" "+rada[i]+"\t");
System.out.println("\n\n");
Vlastní řazení metodou Selection sort:
//vlastni razeni Selection sort
for(i=0; i < rada.length; i++)
{
n=i;
pom=rada[i];
for(j=i; j < rada.length; j++)
{
if(rada[j] < pom)
{
n=j;
pom=rada[j];
PocetVymen++;
}
}
rada[n]=rada[i];
rada[i]=pom;
}
Nyní nám už zbývá vypsat seřazenou posloupnost:
System.out.println("\n\tSerazena rada je:");
for(i=0; i < rada.length; i++)
System.out.print(" "+rada[i]+"\t");
System.out.println("\n\tPocet vymen je:\t"+PocetVymen);
} // konec main
} // konec class