Thursday 18 January 2018

C Program to sort the numbers using Heap Sort

#include<stdio.h>
#include<stdlib.h>
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void heapify(int *ar,int i,int size)
{
int largest=i;
int l=2*i;
int r=2*i+1;
if(l<size && ar[l]>ar[largest])
largest=l;
if(r<size && ar[r]>ar[largest])
largest=r;
if(largest!=i)
{swap(&ar[i],&ar[largest]);heapify(ar,largest,size);}
}
void heapSort(int *ar,int size){
int i;
for(i=(size/2)-1;i>=0;i--)
heapify(ar,i,size);
for(i=size-1;i>=0;i--)
{
swap(&ar[0],&ar[i]);

heapify(ar,0,i);
}
}
void printArray(int *ar,int size)
{
int i;
for(i=0;i<size;i++)
{
printf("%d\t",ar[i]);
}
printf("\n");
}

int main()
{
int i,n;
printf("Enter the size of array:");
scanf("%d",&n);
int *ar=(int *)malloc(n*sizeof(int));
printf("\nEnter the elements of array:");
for(i=0;i<n;i++)
scanf("%d",&ar[i]);
printArray(ar,n);
heapSort(ar,n);
printArray(ar,n);
return 0;
}

No comments:

Post a Comment