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...