Implementacao do QuickSort:
Olá pessoal, estou tentando implementar o QuickSort em C, mas estou tendo alguns problemas. O código esta abaixo, o compilador não gera nenhuma mensagem de erro, mas após algum tempo de execução (já era esperado que a ordenação fosse levar alguns minutos/horas) o programa gera um exceção e é encerrado.
*a esta apontando para o vetor de tamanho variável que foi alocado dinamicamente usando malloc. Alguem tem alguma ideia do que possa estar acontecendo?
Desde já, obrigado.
Obs: O código não foi totalmente escrito por mim, fui juntando vários outros que achei pela internet e ?traduzindo? códigos de outras linguagens ate chegar nesse ai, mas não achei nada de errado com ele.
void swap(int *a, int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
int partition(int *a, int f, int l) {
int pivo = a[f];
while (f < l) {
while (a[f] < pivo) {
f++;
}
while (a[l] > pivo) {
l--;
}
swap(a, f, l);
}
return f;
}
void quicksort(int *a, int l, int r) {
if (r > l) {
int pivotIndex = partition(a, l, r);
quicksort(a, l, pivotIndex-1);
quicksort(a, pivotIndex + 1, r);
}
}