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