Alguem pode me ajudar nesse algoritmo,
Existe alguma coisa de errado, nao consigo achar…
Agradeço quem puder me ajudar…
Segue algoritmo HeapSort abaixo.
public class AlgoritmoHeap
{
public static void main(String[] args)
{
int w[]=new int[6]; //Declaracao do Vetor de 6 posicoes
w[1]=9;
w[2]=8;
w[3]=3;
w[4]=5;
w[5]=6;
w[6]=7;
int n=6;
int dir=0;
int esq=0;
int i=0;
int x=0;
int j=0;
//Montando o primeiro heap
esq = (n/2) +1;
dir=n;
while (esq>1)
{
esq=esq-1;
i=esq;
j=2*i;
x=w[i];
}
while (j<=dir) || (x<w[j])
{
if ((j < dir) || (w[j] < w[j+1]))
{
j= j+1;
}
}
if (x<w[j])
{
w[i]= w[j];
i= j;
j= 2 * i;
}
w[i]= x;
//Ordenando o vetor
while (dir>1)
{
x=w[1];
w[1]=w[dir];
w[dir]=x;
dir=dir -1;
//Montando um novo heap
i=esq;
j=2 * i;
x=w[i];
}
while ((j <= dir) || (x< w[j]))
{
if ((j < dir) || (w[j]<w[j+1]))
{
j= j+1;
}
if (x < w[j])
{
w[i]=w[j];
i=j;
j=2 * i;
}
w[i]=x;
}
}
}
