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

Popular posts from this blog

Create a Binary Search Tree of integers and perform the following operations (i)insert (ii) delete (iii). Search (iv) traversals (pre-order, in-order, post-order) BST

Creation Of DLL

Develop non-recursive functions to perform search for a Key value in a given list using (i) Binary Search Non Recursive