O pessoal, to tentando implementar o quicksort. Montei esse algoritmo aqui mas está dando um pequeno erro na hora de ordenar, alguns ele está deixando errado e tal.. Algm pode da uma mao?
Valeu! (Pus umas flags sinalizadoras e vi que ele não está entrando no segundo laço, mas n sei porque!)
void QSort (int vet[], int ini, int fim)
{int i=ini;
int f=fim;
int pivo = vet[ini];
int esq=1;
int aux;
if (fim > ini)
{
printf ("Fim > Ini! Pivo vale %i\nO vetor é: \n", pivo);
for (aux=ini; aux<fim+1; aux++)
printf (" %i ",vet[aux]);
getch();
do {
if (vet[f]<pivo)
{
printf ("Pivo na esquerda. Trocando %i com %i\n Novo vetor é\n", vet[i], vet[f]);
esq=0;
aux=vet[f];
vet[f]=vet[i];
vet[i]=aux;
i++;
for (aux=ini; aux<fim+1; aux++)
printf (" %i ",vet[aux]);
getch();
}
else
{ printf ("Sem troca! Decrementa fim!\n");
getch();
f--; }
else
if (esq=0)
if (vet[i]>=pivo)
{ printf ("Pivo na direita. Trocando %i com %i \n Novo vetor é \n", vet[i], vet[f]);
aux=vet[i];
vet[i]=vet[f];
vet[f]=aux;
f--;
esq=1;
for (aux=ini; aux<fim+1; aux++)
printf (" %i ",vet[aux]);
getch();
}
else
{ printf ("Sem troca! Incrementa ini!\n");
getch();
i++; }
} while (i < f);
QSort (vet, ini, i-1);
QSort (vet, i+1, fim);
}
} /*end da função */
Sério pessoal, to precisando muito de ajuda! Esse problema ai eu simplesmente não consigo ver a solução :/ Dei uma limpada no codigo, pra quem prefere ver sem flags e tal.
void QSort (int vet[], int ini, int fim)
{ int i=ini;
int f=fim;
int pivo = vet[ini];
int esq;
int aux;
esq=1;
if (fim > ini)
{
while (i < f)
{
if (esq=1)
{
if (vet[f]<pivo)
{ aux=vet[f];
vet[f]=vet[i];
vet[i]=aux;
esq=100;
i=i+1;
}
else
f=f-1;
}
else
{
if (pivo<vet[i])
{ aux=vet[f];
vet[f]=vet[i];
vet[i]=aux;
esq=1;
f=f-1;
}
else
i=i+1;
}
}
QSort (vet, ini, i-1);
QSort (vet, i+1, fim);
}
}
Pergunta
icoN
O pessoal, to tentando implementar o quicksort. Montei esse algoritmo aqui mas está dando um pequeno erro na hora de ordenar, alguns ele está deixando errado e tal.. Algm pode da uma mao?
Valeu! (Pus umas flags sinalizadoras e vi que ele não está entrando no segundo laço, mas n sei porque!)
Sério pessoal, to precisando muito de ajuda! Esse problema ai eu simplesmente não consigo ver a solução :/ Dei uma limpada no codigo, pra quem prefere ver sem flags e tal.Valeu ai!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.