Skip to content

Commit 0e275f3

Browse files
authored
Min and Max Heap
1 parent d9b1bfe commit 0e275f3

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

DataStructure/sorting/MaxHeap.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include<stdio.h>
2+
#include<stdlib.h>
3+
4+
void maxheapify(int *arr,int heapsize,int i)
5+
{
6+
int left = 2*i+1;
7+
int right = 2*i+2;
8+
int largest;
9+
10+
if(left < heapsize && arr[left]>arr[i])
11+
largest = left;
12+
else
13+
largest = i;
14+
15+
if(right < heapsize && arr[right]>arr[largest])
16+
largest = right;
17+
18+
if(largest != i)
19+
{
20+
int temp;
21+
temp = arr[i];
22+
arr[i] = arr[largest];
23+
arr[largest] = temp;
24+
maxheapify(arr,heapsize,largest);
25+
}
26+
}
27+
28+
void Heapsort(int *arr,int size)
29+
{
30+
int HeapSize = size;
31+
int HeapLength = HeapSize;
32+
for(int i=((HeapLength/2)-1);i>=0;i--)
33+
34+
maxheapify(arr,HeapSize,i);
35+
}
36+
37+
int main()
38+
{
39+
int str[] = {4,45,23,2,6,7,33,32,34,55};
40+
int len,i;
41+
len = sizeof(str)/sizeof(str[0]);
42+
Heapsort(str,len);
43+
for (i=0;i<len;i++)
44+
printf("%d ",str[i]);
45+
printf("\n");
46+
47+
return 0;
48+
}

DataStructure/sorting/MinHeap.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include<stdio.h>
2+
#include<stdlib.h>
3+
4+
void heapify(int *arr,int heapsize,int i)
5+
{
6+
int left = 2*i+1;
7+
int right = 2*i+2;
8+
int min;
9+
if(left<heapsize && arr[left]<arr[i])
10+
min = left;
11+
else
12+
min = i;
13+
if(right<heapsize && arr[right]<arr[min])
14+
min = right;
15+
16+
if(min!= i)
17+
{
18+
int temp = arr[min];
19+
arr[min] = arr[i];
20+
arr[i] = temp;
21+
heapify(arr,heapsize,min);
22+
}
23+
}
24+
25+
void MinHeap(int *arr,int size)
26+
{
27+
int i,heapsize;
28+
heapsize = size;
29+
for(i = size/2-1;i>=0;i--)
30+
heapify(arr,heapsize,i);
31+
}
32+
33+
int main()
34+
{
35+
int len,i;
36+
int str[] = { 34,3,56,22,1,36,44,67};
37+
len = sizeof(str)/sizeof(str[0]);
38+
39+
printf("Given array: ");
40+
for(i=0;i<len;i++)
41+
printf("%d ", str[i]);
42+
printf("\n");
43+
44+
MinHeap(str,len);
45+
46+
printf("Min Heap: ");
47+
for(i=0;i<len;i++)
48+
printf("%d ", str[i]);
49+
printf("\n");
50+
return 0;
51+
}

0 commit comments

Comments
 (0)