Showing posts with label Program to implement Heap Sort. Show all posts
Showing posts with label Program to implement Heap Sort. Show all posts

Friday, July 22, 2011

Program to implement Heap Sort

/*Serial No.151     [swami133.cpp]*/

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

void restoreHup(int*,int);
void restoreHdown(int*,int,int);

void main()
{
    int a[20],n,i,j,k;
    clrscr();
    printf("Enter the number of elements to sort : ");
    scanf("%d",&n);

    printf("Enter the elements :");
    for(i=1;i<=n;i++){
        scanf("%d",&a[i]);
        restoreHup(a,i);
    }
    j=n;
    for(i=1;i<=j;i++)
    {
        int temp;
        temp=a[1];
        a[1]=a[n];
        a[n]=temp;
        n--;
        restoreHdown(a,1,n);
    }

    n=j;
    printf("Here is it...");
    for(i=1;i<=n;i++)
        printf("%4d",a[i]);
    getch();
}

void restoreHup(int *a,int i)
{
    int v=a[i];
    while((i>1)&&(a[i/2]<v))
    {
        a[i]=a[i/2];
        i=i/2;
    }
    a[i]=v;
}

void restoreHdown(int *a,int i,int n)
{
    int v=a[i];
    int j=i*2;
    while(j<=n)
    {
        if((j<n)&&(a[j]<a[j+1]))
            j++;
        if(a[j]<a[j/2]) break;
        a[j/2]=a[j];
        j=j*2;
    }
    a[j/2]=v;
}