Loading

C Program for Heap Sort

C - Program for Heap Sort


#include < stdio.h >
#include < conio.h >

void main()
{
    int a[50];
    int n;
    clrscr();
    printf("\nEnter n: ");
    scanf("%d",&n);
    read_data(a,n);
    printf("\nBefore sort : \n");
    print_data(a,n);
    heap_sort(a,n);
    printf("\nAfter sort : \n");
    print_data(a,n);
}

int read_data(int a[],int max)
{
    int i;
    printf("\nEnter %d values \n",max);
    for(i=1;i<=max;i++)
    {
        scanf("%d",&a[i]);
    }
    return;
}

int print_data(int a[],int max)
{
    int i;
    for(i=1;i<=max;i++)
    {
        printf("%10d",a[i]);
    }
    return;
}

int heap_sort(int a[],int n)
{
    int i,j,t;
    for(i=n/2;i>=1;i--)
    {
        adjust(a,i,n);
    }
    for(i=n-1;i>=1;i--)
    {
        printf("\n");
        print_data(a,n);
        t=a[i+1];
        a[i+1]=a[1];
        a[1]=t;
        adjust(a,1,i);
    }
    return;
}
int adjust(int a[],int cur_pos,int max)
{
    int cur_rec,j;
    cur_rec=a[cur_pos];
    j=cur_pos * 2;
    while(j<=max)
    {
        if(j < max)
        {
        if(a[j] < a[j+1])
        {
            j=j+1;
        }
     }
    if(a[j] > cur_rec)
    {
        a[j/2]=a[j];
        j=j*2;
    }
 else
  break;
 }
 a[j/2]=cur_rec;
 return;
}

This entry was posted in . Bookmark the permalink.

Leave a reply