Olá pessoal! Precisava de uma ajuda ai com relação a uma implementação de quicksort. Vejam o código da chamada e do procedimento de partição
void QuickS (int *vet, int ini, int fim)
{ int k;
if (fim > ini)
{ k = Part (vet, ini, fim);
QuickS (vet, ini, k-1);
QuickS (vet, k+1, fim);
};
}
/*****************************************************************************/
int Part (int *vet, int ini, int fim)
{ int i1, f1, cp, esq=1, aux;
i1 = ini;
f1 = fim;
cp = vet[ini];
while (i1 < f1)
{ if (esq=1)
{ if (cp >= vet[f1])
{ aux = vet[i1];
vet[i1] = vet[f1];
vet[f1] = aux;
esq = 0;
i1 = i1 + 1;
}
else
{ f1 = f1 - 1; };
}
else
{ if (cp < vet[i1])
{ aux = vet[f1];
vet [f1] = vet[i1];
vet [i1] = aux;
f1 = f1 - 1;
esq = 1;
}
else
{ i1 = i1 + 1; }
}
};
vet[i1] = cp;
return (i1);
}
O que acontece é que ele repete alguns números no vetor. Tipo, alguns números aparecem só uma vez no vetor inicial e aparecem mais de uma no ordenado, e alguns desaparecem pra que isso possa acontecer! Não sei porque tá dando isso... Alguém ve um erro no codigo? Valeu ai!
Pergunta
icoN
Olá pessoal! Precisava de uma ajuda ai com relação a uma implementação de quicksort. Vejam o código da chamada e do procedimento de partição
O que acontece é que ele repete alguns números no vetor. Tipo, alguns números aparecem só uma vez no vetor inicial e aparecem mais de uma no ordenado, e alguns desaparecem pra que isso possa acontecer! Não sei porque tá dando isso... Alguém ve um erro no codigo? Valeu ai!
Link para o comentário
Compartilhar em outros sites
1 resposta 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.