Nasleduje funkcia v jazyku C, ktorá implementuje algoritmus Select sort. Uvedená funkcia vstupné pole celých čísel usporiada vzostupne.
//******SELECT SORT*******
//vstup: pole celych cisel urcene na usporiadanie, dlzka zadaneho pola
//ucel: vzostupne usporiadanie zadaneho pola
//algoritmus: Select sort vyber minimalneho prvku, vymena s prvym prvkom pola => vzostupne usporiadanie
//vystup: (void)
|
void int_select_vzostup_min(int *pole_int, int dlzka)
{
int presuny = 0;
int porovnania = 0;
int min; //minimalny prvok prvok
int min_i = 0; //index minimalneho prvku
int ptr = 0; //ptr = aktualna pozicia
//zaciatok usporaduvaneho pola
int i; //i = prehladavana pozicia
int pom; //pomocna premenna pri presuvani prvkov
//pokial je aktualna pozicia(=ptr) mensia ako zadana dlzka pola
while(ptr < dlzka){
//32768 = maximum pre cele cisla (int) = pociatocna hodnota min pvrku
min = 32768;
//hladanie minima od aktualnej pozicie(=ptr) po koniec pola
for(i = ptr; i < dlzka; i++){
porovnania++;
if ( pole_int[i] <= min ){
min = pole_int[i];
min_i = i;
}
}
//vymen prvok na aktualnej pozicii(=ptr) s minimalnym prvkom min
if(ptr != min_i){
presuny = presuny+3;
pom = pole_int[min_i];
pole_int[min_i] = pole_int[ptr];
pole_int[ptr] = pom;
}
//aktualna pozicia(=ptr) = dalsi prvok pola
ptr++;
}
//vypis konecnych hodnot porovnani a presunov
printf("Pocet porovnani: %d\n", porovnania);
printf("Pocet presunov: %d\n", presuny);
return;
}
|