Algoritmy usporadúvania

Select sort

Implementácia

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;
}