Sie sind auf Seite 1von 2

visit-www.Codes2u.

com
# include<stdio.h>
#include<conio.h>
#include<time.h>
#define left(i) 2*i
#define right(i) 2*i+1
int static c=1;
int main()
{ int a[100],i,j,n,hs;
printf("Enter no. of elements");
scanf("%d",&hs);
printf("\n HS=%d\n",hs);
for(i=1;i<(hs+1);i++)
scanf("%d",&a[i]);
printf("\n \nUnsorted Array: ");
for(i=1;i<hs+1;i++)
printf("%d ",a[i]);
printf("\n\n");
heapsort(a,hs);
printf("\n\nsorted array:");
for(i=1;i<(hs+1);i++)
printf("%d ",a[i]);
printf("\nComparisions : %d ", c);
getch();
}
MH(int a[],int i,int hs)
{ int l,r,lar,t;
l=left(i); r=right(i);
if ( l<=hs && a[l]>a[i] && ++c )
lar=l;
else lar=i;
if ( r<=hs && a[r]>a[lar] && ++c)
lar=r;
if(lar!=i)
{t=a[i];//printf("\nINSIDE MH");
a[i]=a[lar];
a[lar]=t;
MH(a,lar,hs);
}
}
BMH(int a[],int hs)
{ int i; printf("\nINSIDE BMH");

for (i=hs/2;i>=1;i--)
{
MH(a,i,hs); }
printf("\nBMH end");
for(i=1;i<hs+1;i++)
printf(" %d",a[i]);
}
heapsort(int a[],int hs)
{
int i,t;
BMH(a,hs);
for(i=hs;i>1;i--)
{
t=a[i];
a[i]=a[1];
a[1]=t;
hs--;
MH(a,1,hs);
}
}

Das könnte Ihnen auch gefallen