top of page
Wave
Cactus%20Plant_edited.jpg

MAX HEAP SORT

#include<stdio.h>
int main()
{
    void display(int *,int );
    void del_max_heap(int *,int );
    void create_max_heap(int *,int ,int );
    int a[100],n,i,item;
    printf("How many value you want to insert: ");
    scanf("%d",&n);
    printf("\nEnter the root element: ");
    scanf("%d",&a[1]);
    for(i=2;i<=n;i++)
    {
        printf("Enter the element: ");
        scanf("%d",&item);
        create_max_heap(a,i,item);
    }
    printf("\nThe heap tree is:\n");
    display(a,n);
    for(i=n;i>1;i--)
        del_max_heap(a,i);
    printf("\nArray after heap sort:\n");
    display(a,n);    
    return 1;
}
void display(int a[],int n)
{
    int i;
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
    printf("\n\n");    
}
void create_max_heap(int a[],int n,int item)
{
    int ptr,par;
    ptr=n;
    while(ptr!=1)
    {
        par=ptr/2;
        if(a[par]<item)
            a[ptr]=a[par];
        else
            break;
        ptr=par;        
    }
    a[ptr]=item;
}
void del_max_heap(int a[],int n)
{
    int ptr,item;
    item=a[n];
    a[n]=a[1];
    n=n-1;
    ptr=1;
    while(2*ptr+1<=n)
    {
        if(item>a[2*ptr]&&item>a[2*ptr+1])
            break;
        else if(a[2*ptr]>a[2*ptr+1])    
        {
            a[ptr]=a[2*ptr];
            ptr=ptr*2;
        }
        else
        {
            a[ptr]=a[2*ptr+1];
            ptr=2*ptr+1;
        }
    }
    if(2*ptr>n)
        a[ptr]=item;
    else if(item>a[2*ptr])
        a[ptr]=item;
    else
    {
        a[ptr]=a[2*ptr];
        a[2*ptr]=item;
    }
}

Cactus%20Plant_edited.jpg

MIN HEAP SORT

#include<stdio.h>
int main()
{
    void display(int *,int );
    void del_min_heap(int *,int );
    void create_min_heap(int *,int ,int );
    int a[100],n,i,item;
    printf("How many value you want to insert: ");
    scanf("%d",&n);
    printf("\nEnter the root element: ");
    scanf("%d",&a[1]);
    for(i=2;i<=n;i++)
    {
        printf("Enter the element: ");
        scanf("%d",&item);
        create_min_heap(a,i,item);
    }
    printf("\nThe heap tree is:\n");
    display(a,n);
    for(i=n;i>1;i--)
        del_min_heap(a,i);
    printf("\nArray after heap sort:\n");
    display(a,n);    
    return 1;
}
void display(int a[],int n)
{
    int i;
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
    printf("\n\n");    
}
void create_min_heap(int a[],int n,int item)
{
    int ptr,par;
    ptr=n;
    while(ptr!=1)
    {
        par=ptr/2;
        if(a[par]>item)
            a[ptr]=a[par];
        else
            break;
        ptr=par;        
    }
    a[ptr]=item;
}
void del_min_heap(int a[],int n)
{
    int ptr,item;
    item=a[n];
    a[n]=a[1];
    n=n-1;
    ptr=1;
    while(2*ptr+1<=n)
    {
        if(item<a[2*ptr]&&item<a[2*ptr+1])
            break;
        else if(a[2*ptr]<a[2*ptr+1])    
        {
            a[ptr]=a[2*ptr];
            ptr=ptr*2;
        }
        else
        {
            a[ptr]=a[2*ptr+1];
            ptr=2*ptr+1;
        }
    }
    if(2*ptr>n)
        a[ptr]=item;
    else if(item<a[2*ptr])
        a[ptr]=item;
    else
    {
        a[ptr]=a[2*ptr];
        a[2*ptr]=item;
    }
}

Subscribe Form

Thanks for submitting!

  • Facebook
  • YouTube
  • Instagram
  • Twitter

©2020 by Abhisek Midya ( A18 )

bottom of page