Here is my code:
#include <stdio.h>
#include <stdlib.h>
int lista[1000];
int tamanho;
main () {
printf("Tamanho: ");
scanf("%d", & tamanho);
int c;
for (c = 0; c < tamanho; c++) {
lista[c] = c + 1;
}
misturar();
for (c = 0; c < tamanho; c++) {
printf("%d ", lista[c]);
}
quick(lista, 0, tamanho - 1);
}
misturar() {
int a,b,backup;
for (a = 0; a < tamanho; a++) {
b = rand() % tamanho;
backup = lista[a];
lista[a] = lista[b];
lista[b] = backup;
}
}
quick(int *tabela, int ini, int fim) {
int a,b,pivo,backup;
a = ini;
b = fim;
pivo = tabela[(a + b) / 2];
while (a < b) {
while (tabela[a] < pivo) {
a = a + 1;
}
while (tabela[b] > pivo) {
b = b + 1;
}
if (a <= b) {
backup = tabela[a];
tabela[a] = tabela[b];
tabela[b] = backup;
a = a + 1;
b = b - 1;
}
}
if (b > ini) {
quick(*tabela, ini, b - 1);
}
if (a < fim) {
quick(*tabela, a, fim - 1);
}
}