24.1.12

Heapuri

public class heap {

       
        static int a[]={12,4,7,29,48,16,18};
        int heapsize=0;

       
static int parinte(int i){
   
    return (i-1)/2;

}   
int stanga(int i){
   
    return i*2+1;
}
int dreapta(int i){
   
    return i*2+2;
}

 void insert(int a[],int z){
   
   
    heapsize=heapsize+1;
   
    int i;
    i=heapsize;
   
    while((i>0)&&(a[parinte(i)]>z)){
            a[i]=a[parinte(i)];
            i=parinte(i); }
   
        a[i]=z;
   
        //extragere A[0] , A[0], Reconstituie(A,0),(a.size-1)/2 pana la 0
        // heapsize=0;,for=1,a.length-1;
}

 void reconstituire(int a[],int i){
    int s=stanga(i);
    int d=dreapta(i);
    int min;
   
    if((s<=heapsize)&&(a[s]<a[i]))
        min=s;
    else
            min=i;
    if((d<=heapsize)&&(a[d]<a[min]))
            min=d;
    if(min!=i){
        int aux=a[i];
        a[i]=a[min];
        a[min]=aux;
       
        reconstituire(a,min);
    }
 }

 void heapsort(int a[]){
   
     construieste(a);
   
   
   
     for(int i=a.length-1;i>=1;i--){
         int aux=a[0];
         a[0]=a[i];
         a[i]=aux;
       
    heapsize=heapsize-1;
   
        reconstituire(a,0);
       
     }
 }

void construieste(int a[]){
    heapsize=0;
    for(int i=1;i<a.length;i++)
        insert(a,a[i]);
}

void construiesteiara(int a[]){
    heapsize=a.length;
   
    for(int i=(a.length-1)/2;i>=0;i--)
        reconstituire(a,i);
}

public static void main(String[] args){
   
    heap h=new heap();
   
    //h.construiesteiara(a);
    h.heapsort(a);
   
    //System.out.println("ceva");
   
    for(int k=0;k<a.length;k++){
        System.out.println(a[k]);
    }
}
}

No comments:

Post a Comment

Scala & Kolacny Brothers - Creep