(DS-8)
8A. Write a program to insert the element into maximum heap.
#include<stdio.h>
#include<conio.h>
#define SIZE 30
int a[SIZE], n;
void maxheapify(int a[],int i,int n1);
void buildheap(int a[],int n1);
void swap(int i,int j);
int main()
{
int i,j;
printf("\nenter the number of elements: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enter a value:");
scanf("%d",&a[i]);
}
buildheap(a,n);
for(j=0;j<n;j++)
{
printf("\t%d",a[j]);
}
printf("\n");
}
void buildheap(int a[],int n1)
{
int i,j;
for(i=(n1/2)-1;i>=0;i--)
{
maxheapify(a,i,n1);
}
}
void maxheapify(int a[],int i,int n1)
{
int max,l,r;
max=i;
l=(2*i)+1;
r=(2*i)+2;
if(l<n1&&r<n1){
if(a[l]>a[max])
{
max=l;
}
if(a[r]>a[max])
{
max=r;
}
}
else if(l<n1&&r>=n1)
{
if(a[l]>a[max])
{
max=l;
}
}
else if(l>=n1&&r<n1)
{
if(a[r]>a[max])
{
max=r;
}
}
if(i!=max)
{
swap(i,max);
maxheapify(a,max,n1);
}
}
void swap(int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
8B. Write a program to insert the element into minimum heap.
#include<stdio.h>
#include<conio.h>
#define SIZE 30
int a[SIZE], n;
void minheapify(int a[],int i,int n1);
void buildheap(int a[],int n1);
void swap(int i,int j);
int main()
{
int i,j;
printf("\nenter the number of elements: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enter a value:");
scanf("%d",&a[i]);
}
buildheap(a,n);
for(j=0;j<n;j++)
{
printf("\t%d",a[j]);
}
printf("\n");
}
void buildheap(int a[],int n1)
{
int i,j;
for(i=(n1/2)-1;i>=0;i--)
{
minheapify(a,i,n1);
}
}
void minheapify(int a[],int i,int n1)
{
int min,l,r;
min=i;
l=(2*i)+1;
r=(2*i)+2;
if(l<n1&&r<n1){
if(a[l]<a[min])
{
min=l;
}
if(a[r]<a[min])
{
min=r;
}
}
else if(l<n1&&r>=n1)
{
if(a[l]<a[min])
{
min=l;
}
}
else if(l>=n1&&r<n1)
{
if(a[r]<a[min])
{
min=r;
}
}
if(i!=min)
{
swap(i,min);
minheapify(a,min,n1);
}
}
void swap(int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
Comments
Post a Comment