You are on page 1of 2

#include<stdio.

h>
#include<stdlib.h>
int count=0;
void create(int a[50],int n)
{
int k,c,p,key;
for(k=1;k<n;k++)
{
c=k;
key=a[k];
p=(c-1)/2;
while(c>0 && key>a[p])
{
a[c]=a[p];
c=p;
p=(c-1)/2;
count++;
}
a[c]=key;
count++;
}
}
void modify(int a[50],int n,int p)
{
int item,c;
item=a[p];
c=2*p+1;
while(c<n)
{
count++;
if(c+1<n)
{
count++;
if(a[c]<a[c+1])
{ c++; count++; }
}
if(item<a[c])
{
a[p]=a[c];
p=c;
c=2*p+1;
count++;
}
else break;
}
a[p]=item;
}
int main()
{
int a[50],n,i,temp;
system("clear");

printf("\n Enter size of array\n");


scanf("%d",&n);
printf("\n Enter array elements\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
create(a,n);
for(i=n-1;i>0;i--)
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
count+=3;
modify(a,i,0);
}
printf("\n Sorted array using heap sort\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n\nStep count: %d",count);
return 0;
}

You might also like