/* selection sort */

#include <stdio.h>
#include <string.h>

struct naamTag {
	char roepnaam[20];
	char familienaam[20];
};

typedef struct naamTag naam;

#define NAMEN_SIZE	11

/* globale array namen */
naam namen[NAMEN_SIZE] = {
	{"Jan", "Jansen"},
	{"Jantien", "Timmermans"},
	{"Jasper", "van Buuren"},
	{"Janneke", "Groenteman"},
	{"Jasmijn", "Saarloos"},
	{"Jaccomiene", "Pieterse"},
	{"Jans", "Bildirici"},
	{"Jacco", "van den Hoek"},
	{"Jan", "Klaasen"},
	{"Jaap", "Oosthoek"},
	{"Jamal", "Aissaoui"},
};

/* printRoepNamen maakt gebruik van de globale array namen */
void printRoepNamen() {
	int i;
	for (i = 0; i < NAMEN_SIZE; ++i) {
		puts(namen[i].roepnaam);
	}
}

/* hulpfunctie voor de functie selectionSortArray */
void swap(naam* p, naam* q) {
	naam temp;
	temp = *p;
	*p = *q;
	*q = temp;
}

/* selectionSortArray maakt gebruik van parameters */
void selectionSortArray(naam array[], int aantal) {
	int top, largePosition, j;
	for (top = aantal - 1; top > 0; --top) {
		largePosition=0;
		for (j = 1; j <= top; ++j)
			if (strcmp(array[largePosition].roepnaam, array[j].roepnaam) < 0)
				largePosition = j;
		if (top != largePosition)
			swap(&array[top], &array[largePosition]);
	}
}

int main() {
	puts("De array voor het sorteren:");
	printRoepNamen();
	selectionSortArray(namen, NAMEN_SIZE);
	puts("");
	puts("De array na het sorteren op roepnaam:");
	printRoepNamen();
	return 0;
}
