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

void quicksort(int left, int right, int *v);
void swap(int i, int j, int **v);

int main(int argc, char **argv)
{

	int MAX;
	
	if(argc < 2) {
		printf("Use: %s numero\n", argv[0]);
		return -1;
	}
	
	MAX= atoi(argv[1]);
	
	int i;
	int *vetor;
    clock_t inicio, fim;
    float periodo;
	
	vetor = (int *)malloc(sizeof(int)*MAX);

	srand(time(NULL));
	for(i = 0; i < MAX; i++) {
		vetor[i] = rand() % 1023;
	}

	inicio = clock();	
	quicksort(0, MAX-1, vetor);
	fim = clock();
	
    periodo = (float)(((float)fim-(float)inicio)/CLOCKS_PER_SEC);
    printf("Tempo: %.15f\n", periodo);

	return 0;
}

void quicksort(int left, int right, int *v)
{
	int pivot = v[(left+right)/2];
	int i = left;
	int j = right;
	
	if ( left < right ) {
	
		do {
	
			while (v[i] < pivot) i++;
			while (v[j] > pivot) j--;
		
			if( i <= j ) {
				swap(i, j, &v);
				i++;
				j--;
			}
		
	
		} while( i <= j );
	
		quicksort(left, j, v);
		quicksort(i, right, v);
	}
}

void swap(int i, int j, int **v) {
	int aux;
	
	aux = (*v)[j];
	(*v)[j] = (*v)[i];
	(*v)[i] = aux;
	
}

