/* selection sort december 2001 */

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