#include <stdio.h>

#define N 5							 

void selection_sort(int *a, int n);
int *find_largest(int *a, int n);
void swap(int *p, int *q);

int main(void){
	int i;
	int a[N];
	
	printf("Enter %d numbers to be sorted: ", N);
	for (i = 0; i < N; i++)
		scanf("%d", a+i);
	
	selection_sort(a, N);
	
	printf("In sorted order:");
	for (i = 0; i < N; i++)
		printf(" %d", *(a+i));
	printf("\n");

	return 0;
}

void selection_sort(int *a, int n){
	int i = 0;
	int *largest;

	for(i = 0; i < n-1; i++){
		largest = find_largest(a, n-i);
		swap(largest, a+(n-1-i));
	}
}

int *find_largest(int *a, int n){
	int *p = a;
	int *largest = p;
	for(++p; p < a+n; p++){
		if(*p > *largest){
			largest = p;
		}
	}
	return largest;
}

void swap(int *p, int *q){
	int temp = *p;
	*p = *q;
	*q = temp;
}