Max-Heap Implementation
AIM:
To Implement a Max-Heap
Description:
In this program, Max-Heap is implemented using arrays
Program:
#include<stdio.h>
#include<stdlib.h>
void swap(int *a,int *b)
{
int temp=*b;
*b=*a;
*a=temp;
}
void heapify(int arr[],int size,int i)
{
if(size==1)
{
printf("\n Single Element in the Heap %d",arr[0]);
}
else
{
int largest=i;
int l=2*i+1;
int r=2*i+2;
if(l<size&&arr[l]>arr[i])
largest=l;
if(r<size&&arr[r]>arr[largest])
largest=r;
if(largest!=i)
{
swap(&arr[i],&arr[largest]);
heapify(arr,size,largest);
}
}
}
void insert(int arr[],int num,int size)
{
int i;
if(size==0)
{
arr[0]=num;
}
else
{
arr[size]=num;
for(i=size/2-1;i>=0;i--)
{
heapify(arr,size,i);
}
}
}
int delete(int arr[],int size,int num)
{
int i;
for(i=0;i<size;i++)
{
if(num==arr[i])
break;
}
if(i==size)
{
return -1;
}
swap(&arr[i],&arr[size-1]);
size=size-1;
for(i=size/2-1;i>=0;i--)
{
heapify(arr,size,i);
}
return num;
}
void printMaxHeap(int arr[],int size)
{
int i;
for(i=0;i<size;i++)
{
printf(" %d",arr[i]);
}
printf("\n");
}
int main()
{
int cho,num,ans,arr[1000],size=0;
printf("\n Enter Operation to be performed : ");
printf("\n 1. Insertion");
printf("\t 2. Deletion");
printf("\t 3. Print Max Heap");
printf("\t 4. Exit");
do
{
printf("\n Enter Your Choice : ");
scanf("%d",&cho);
switch(cho)
{
case 1:
printf("\n Enter Number to be Inserted : ");
scanf("%d",&num);
insert(arr,num,size);
size=size+1;
printf("\n Number %d Inserted!!!\n",num);
break;
case 2:
printf("\n Enter Number to be Deleted : ");
scanf("%d",&num);
ans=delete(arr,size,num);
if(ans==-1)
{
printf("\n Number haven't found!!!\n");
}
else
{
printf("\n Number %d Deleted!!\n",ans);
size=size-1;
}
break;
case 3:
printf("\n Max-Heap: \n");
printMaxHeap(arr,size);
break;
case 4:
printf("\n Done!!!\n");
break;
default:
printf("\n Invalid Choice!!!\n");
}
}while(cho!=4);
return 0;
}
OUTPUT
Enter Operation to be performed :
1. Insertion 2. Deletion 3. Print Max Heap 4. Exit
Enter Your Choice : 1
Enter Number to be Inserted : 10
Number 10 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 20
Number 20 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 32
Number 32 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 56
Number 56 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 48
Number 48 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 64
Number 64 Inserted!!!
Enter Your Choice : 1
Enter Number to be Inserted : 8
Number 8 Inserted!!!
Enter Your Choice : 3
Max-Heap:
64 48 56 10 32 20 8
Enter Your Choice : 2
Enter Number to be Deleted : 32
Number 32 Deleted!!
Enter Your Choice : 2
Enter Number to be Deleted : 56
Number 56 Deleted!!
Enter Your Choice : 3
Max-Heap:
64 48 20 10 8
Enter Your Choice : 2
Enter Number to be Deleted : 64
Number 64 Deleted!!
Enter Your Choice : 3
Max-Heap:
48 10 20 8
Enter Your Choice : 4
Done!!!
--------------------------------
Process exited after 3.254 seconds with return value 0
Press any key to continue . . .
No comments:
Post a Comment