Transofmar em Heap Maximo

0 respostas
E

Estou tentando criar um codido para transformar um heap em um heap maximo. Se alguem puder ajudar… Agradeço.
Segue abaixo o cod:

import java.util.Scanner;

public class Heap {
    public static void main ( String args[]){
        Scanner leitor = new Scanner ( System.in );
        int tam;
        System.out.println( "Digite o tamnanho: " );
        tam = leitor.nextInt();
        int vet[] = new int[tam];
        le( vet );
        imprime( vet );
        maxHeap(vet, 1);
        System.out.println( "maxHeap" );
        imprime( vet );
    }

    public static void le(int vet[]){
        Scanner leitor = new Scanner( System.in );
        for ( int i=0; i<vet.length; i++ ){
            System.out.println( "Digite o valor: " );
            vet[i] = leitor.nextInt();
        }
    }

    public static void imprime ( int vet[] ){
        for ( int i=0; i<vet.length; i++ )
            System.out.print( vet[i] + " " );
        System.out.println();
    }

    public static void maxHeap ( int vet[] , int i ){
        int l = vet[2*i];
        int r = vet[2*i+1];
        int maior, temp;
        if (( l <= vet.length ) && ( vet[l]>vet[i] ))
            maior = l;
        else
            maior = i;

        if (( r<=vet.length ) && ( vet[r]>vet[maior] )){
            maior = r;
        }

        if ( maior != i ){
            temp = vet[i];
            vet[i] = vet[maior];
            vet[maior] = temp;
            maxHeap ( vet, maior );
        }
    }
}
Criado 25 de agosto de 2009
Respostas 0
Participantes 1