void troca(int *x, int *y){ int aux = *x; *x = *y; *y = aux; } int particao(int *A, int esq, int dir){ int pivo = A[dir]; int j, i = esq; for(j = esq; j < dir; j++) if(A[j] <= pivo){ troca(&A[i], &A[j]); i++; } troca(&A[i], &A[dir]); return i; } void quick_sort(int *A, int esq, int dir){ if(esq < dir){ int pos = particao(A, esq, dir); quick_sort(A, esq, pos - 1); quick_sort(A, pos + 1, dir); } } int main(){ int i, A[5] = {4, 7, 1, 5, 3}; for(i = 0; i < 5; i++) printf("%d ", A[i]); printf("\n"); quick_sort(A, 0, 4); for(i = 0; i < 5; i++) printf("%d ", A[i]); }