Heap Sort


#include<stdio.h>
#include<conio.h>
void main()
{
 int a[5],n,i,temp;
 printf("Enter numbers for elements");
 scanf("%d",&n);
 printf("Enter elements in Array");
 for(i=0;i<n;i++)
 {
 scanf("%d",&a[i]);
 }
 printf("Numbers are\n");
 for(i=0;i<n;i++)
 {
 printf("%d",a[i]);
 }

 heap_sort(a,n);

 printf("\nSorted Numbers are\n");
 for(i=0;i<n;i++)
 {
 printf("%d",a[i]);
 }
 getch();
}

heap_sort(int a[],int n)
{
 int i,temp;
 heap_create(a,n);
 for(i=n-1;i>0;i--)
 {
  temp=a[0];
  a[0]=a[i];
  a[i]=temp;

  adjust(a,i);
 }
 return 0;
}

heap_create(int a[],int n)
{
 int i,j,k,item;
 for(k=1;k<n;k++)
 {
  item=a[k];
  i=k;
  j=(i-1)/2;
  while(i>0&&item>a[j])
  {
   a[i]=a[j];
   i=j;
   j=(i-1)/2;
  }
  a[i]=item;
  }
  return 0;
 }

 adjust(int a[],int n)
 {
  int i,j,item;
  j=0;
  item=a[j];
  i=2*j+1;
  while(i<=n-1)
  {
   if(i+1<=n-1)
   if(a[i]<a[i+1])
   i++;
   if(item<a[i])
   {
    a[j]=a[i];
    j=i;
    i=2*j+1;
   }
   else
    break;
  }
  a[j]=item;
  return 0;
}

Post a Comment

Previous Post Next Post