Implement Heap sort to sort given set of integers
#include<stdio.h>
void heapsort(int a[],int n);
void precdown(int [],int,int);
int main()
{
int a[20],i,n;
printf("\n Enter No Of Elements:");
scanf("%d",&n);
printf("\n Enter %d Elements:",n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
heapsort(a,n);
printf("\n After Sorting:");
for(i=1;i<=n;i++)
printf("%d\t",a[i]);
return 0;
}
void heapsort(int a[],int n)
{
int i,j,t;
for(i=n/2;i>0;i--)
precdown(a,i,n);
printf("\n Max heap is:");
for(i=1;i<=n;i++)
printf("%d\t",a[i]);
for(j=n;j>0;j--)
{
t=a[1];
a[1]=a[j];
a[j]=t;
n=n-1;
precdown(a,1,n);
}
}
void precdown(int a[],int m,int n)
{
int left,right,target,t;
while(2*m<=n)
{
left=2*m;
right=2*m+1;
if(right<=n && a[right]>a[left])
target=right;
else
target=left;
if(a[target]>a[m])
{
t=a[m];
a[m]=a[target];
a[target]=t;
m=target;
}
else
break;
}
}
Comments
Post a Comment