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]);
}
Comments