[Java] Kopiec na tablicy

mistrz23
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 18 mar 2013, o 15:14
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[Java] Kopiec na tablicy

Post autor: mistrz23 »

Napisz program zawierający tablicową implementację kopca. Program główny ma budować kopiec z tablicy n losowo wybranych liczb, wyświetlać kopiec w porządku inOrder z zaznaczeniem poziomów wyświetlanych węzłów a następnie posortować wylosowane liczby i wyświetlić je.

Kod: Zaznacz cały

package heap;

public class Heap {
    private int numberElem;
    private int[] elements;
    Heap(int maxSize){
        elements= new int[maxSize];
        numberElem=0;
    }
    public void add(int value)throws Exception{
        try{
            element[numberElem]=value;
            numberElem ++;
            minHeap();
        }catch (Exception e){
            trow new Exception(" Brak miejsc w kopcu ");
        }
    }
    private void minHeapty(){
        int i =numberElem-1;
        int rob;
        while((i>0)&&(element[i]>element[(i-1)/2])){
            rob=element[i];
            element[i]=element[(i-1)/2];
            element[(i-1)/2]=rob;
            i=(i-1)/2;
        }
    }
    public boolean removeMax(){
        if(numberElem >0){
            element[0]=element[numberElem-1];
            maxHeapify(0);
            return true;
        }
        return false;
    }
    private void maxHeapify(int r){
        int i=r;
        int rob;
        int left=2*i+1;
        int right=2*(i+1);
        boolean far=true;
        while(left<numberElem && 
                if(ringht<numberElem){
                    if(elements[left]> elements[right]){
                        if(elements[i]<elements[left]){
                            elements[i]<elements[left];
                            i=left;
                        }else far=false;
                    }else{
                        if(elements[i]<elemets[right]){
                            elements[i]<elements[right];
                            i=right;
                        }else far=false;
                    }else {
                            if(elements[i]<elements[left]){
                            elements[i]<elements[ledt];
                            i=left;
                            }else far=false;
                            }
                    left =2*i-1;
                    ringht =2*(i+1);
                }
    }
    public void makeHeappy(int[] tab)throws Exception{
        try{
            for(int i=0;i<tab.lenght;i++){
                elements[i]=tab[i];
            }
            numberElem=tab.lenght;
        }catch(Exceptione){
            trows new Exception (" Brak miejsca w kmopcu ")
        }
        heapify(0);
    }
    private void heapify (int i){
        if(2*i+1<numberElem){
            heapify (2*i+1);
        }
        if(2*(i+1)<number Elem){
        heapify(2*(i+1));
    }
        maxHeapify(i);
    }
    
    public static void main(String[] args) {
       
    }

   

    
    
}
Napisałem, to co umiałem i nie wiem jak zaimpementować te metody.
Ostatnio zmieniony 10 maja 2015, o 15:54 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
ODPOWIEDZ