/*
 * Measure performance of qsort:
 *  qsort_perf number_elements
 */

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>

int
int_compare(const void *arg1, const void *arg2)
{
	int int1 = *(const int *) arg1;
	int int2 = *(const int *) arg2;

	if (int1 > int2)
		return 1;
	if (int1 < int2)
		return -1;
	return 0;
}

int
main(int argc, char **argv)
{
	int	num_elts, i;
	int	*elts;

	if (argc != 2)
	{
		fprintf(stderr, "Incorrect number of arguments\n");
		exit(1);
	}

	num_elts = atoi(argv[1]);

	elts = (int *) malloc(num_elts * sizeof(int));

	for (i = 0; i < num_elts; i++)
		elts[i] = random();

	fprintf(stdout, "Beginning %u\n", (unsigned) time(NULL));
	qsort(elts, num_elts, sizeof(int), int_compare);
	fprintf(stdout, "Finishing %u\n", (unsigned) time(NULL));

	exit(0);
}
