email tisk

2008-01-25 15:53:57 | zobrazeno: 7478x
Ukázka řazení v Javě metodou Selection sort.

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