I would like an opinion from visitors and senior programmers on the following test question that I'm considering to give to a class of students who are beginning to learn C programming. If I was to ask these students to describe what is going on with this sort program, do think it would be fair to ask them this when they only have an 1 hour and 45 minutes to complete it the 10 question exam. I feel that these students should spend at the most, 30 minutes on this question. Tell me what you think? If you want... try to answer the question. I know how much you guy's like a challenge!

Thank you!

Code:
#include <stdio.h>
#define N 10


void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);

main()
{

	int a[N], i;

	printf("Enter %d numbers to be sorted: ", N);
	for(i = 0; i < N; i++)
		scanf("%d", &a[i]);

	quicksort(a, 0, N - 1);

	printf("In sorted order: ");
	for(i = 0; i < N; i++)
		printf("%d ", a[i]);
	printf(" \n");

   getchar();
   getchar();
	return 0;
}

void quicksort(int a[], int low, int high)
{
	int middle;

   if(low >= high) return;
	middle = split(a, low, high);
	quicksort(a, low, middle - 1);
	quicksort(a, middle + 1, high);
}

int split(int a[], int low, int high)
{
 	int part_element = a[low];

 	for(;;){
   	while(low < high && part_element <= a[high])
   		high--;
   	if(low >= high) break;
   	a[low++] = a[high];

   	while(low < high && a[low] <= part_element)
   		low++;
   	if(low >= high) break;
   	a[high--] = a[low];
	}

 	a[high] = part_element;
 	return high;
}