Logo Hardware.com.br
alves 91
alves 91 Membro Senior Registrado
390 Mensagens 8 Curtidas

Resolvido - Metodo de ordencao HeapSort c++

#1 Por alves 91 01/06/2010 - 13:43
Eaew..galera...

Bom o meu professor de lógica de programação passou um código-fonte do heap sort, porém axo que ta bugado, sempre pega lixo de memória e joga no vetor...

algem poderia me ajudar.
Não tem nada de classe, objetos, etc


void heapsort (int v[], int n)
{
int p, m;
for (p = n/2; p >= 1; --p)
percDown (v, p, n);
for (m = n; m >= 2; --m)
{
Troca (v[1], v[m]);
percDown (v, 1, m-1);
}
}

void percDown (int v[], int p, int m)
{
int f = 2*p;
while (f <= m)
{
if (f < m && v[f] < v[f+1])
++f;
// f é o filho "mais valioso" de p
if (v[p] >= v[f])
break;
troca(v[p], v[f])
p = f;
f *= 2;
}
}

void troca(int &a, int &b)
{
int aux;
aux = a;
a = b;
b = aux;
}
Desde já valew...
screenblack
screenblack Super Participante Registrado
360 Mensagens 18 Curtidas
#2 Por screenblack
01/06/2010 - 15:11
Para evitar sempre os lixos em memória, aconselha-se pré-definir valores para as variáveis.
Ex:

int i =0; j = 0;
char n[100] = '\0';
...
Quem sabe isso já solucione o seu problema.

E, se a dúvida for sobre o heapsort, na wikipedia existe uma documentação muito boa, até com exemplos em C++.
http://pt.wikipedia.org/wiki/Heapsort
"Se BEBER, não compile o KERNEL. Se compilar o KERNEL, não BEBA." By: A.A.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal