#include #define tInfo int int particione(tInfo *a, int limInf, int limSup) { tInfo pivo, temp; int baixo, alto; pivo = a[limInf]; alto = limSup; baixo = limInf + 1; while (baixo < alto) { while (a[baixo] < pivo && baixo < limSup) { baixo++; } while (a[alto] > pivo) { // <-- CORRECAO NESTE PONTO ('>' em vez de '>=') alto--; } if (baixo < alto) { temp = a[baixo]; a[baixo] = a[alto]; a[alto] = temp; } } a[limInf] = a[alto]; a[alto] = pivo; return alto; } void quicksort(tInfo *a, int limInf, int limSup) { int i; if (limSup > limInf) { i = particione(a, limInf, limSup); quicksort(a, limInf, i-1); quicksort(a, i+1, limSup); } } int main() { int i; int a[10] = {10, 50, 40, 30, 90, 80, 70, 20, 30, 60}; quicksort(a, 0, 9); for (i=0; i < 10; i++) { printf("%d ", a[i]); } printf("\n"); return 0; }