SOURCE CODE:
“Heap.h” File:
#include<stdio.h>
#include<conio.h>
#define leftchild(i) (2*i+1)
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void percdown(int A[],int i,int n)
{
int child,tmp;
for(tmp=A[i];leftchild(i)<n;i=child)
{
child=leftchild(i);
if(child!=n-1&&A[child+1]>A[child])
child++;
if(tmp<A[child])
A[i]=A[child];
else
break;
}
A[i]=tmp;
}
void display(int A[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\t%d\t",A[i]);
}
printf("\n");
}
void heapsort(int A[],int n)
{
int i;
for(i=n/2;i>=0;i--)
percdown(A,i,n);
display(A,n);
for(i=n-1;i>0;i--)
{
swap(&A[0],&A[i]);
percdown(A,0,i);
display(A,n);
getch();
}
}
“Heap.c” File:
#include"heap.h"
void main()
{
int A[20],n;
int i;
clrscr();
printf("\n\n How many numbers do u want to sort:\t");
scanf("%d",&n);
printf("\n Enter the values");
for(i=0;i<n;i++)
{
printf("\nA[%d]\t",i);
scanf("%d",&A[i]);
}
heapsort(A,n);
getch();
}
OUTPUT:
How many numbers do u want to sort: 5
Enter the values
A[0] 100
A[1] 25
A[2] 10
A[3] 9
A[4] 5
100 25 10 9 5
25 9 10 5 100
10 9 5 25 100
9 5 10 25 100
5 9 10 25 100
EmoticonEmoticon