Skip to content

Commit 3e7ede6

Browse files
authored
Merge pull request #476 from ShivangiBhatnagar-246/HeapSortinC
HeapSort in C Language
2 parents 7362e6c + f1e5a6b commit 3e7ede6

File tree

2 files changed

+61
-13
lines changed

2 files changed

+61
-13
lines changed

.vscode/settings.json

Lines changed: 0 additions & 13 deletions
This file was deleted.

Sorting Algorithms/HeapSortinC.C

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include<stdio.h>
2+
#include<conio.h>
3+
void heapify(int arr[],int n,int i)
4+
{
5+
int max=i; //parent node index
6+
int left = 2*i +1; // left child node index
7+
int right =2*i+2; //right child node index
8+
int temp;
9+
if(left<n && arr[left]> arr[max]) //if left child node is greater than parent
10+
{
11+
max =left;
12+
}
13+
if(right<n && arr[right]> arr[max])
14+
{
15+
max =right;
16+
}
17+
if(max != i)
18+
{
19+
temp = arr[i]; //swapping the max element to the root node
20+
arr[i]=arr[max];
21+
arr[max]=temp;
22+
heapify(arr,n,max); //every node element
23+
}
24+
}
25+
26+
27+
void heapsort(int arr[],int n)
28+
{
29+
int i,temp;
30+
31+
for(i=n/2-1;i>=0;i--)
32+
{
33+
heapify(arr,n,i);
34+
}
35+
//swap the elements and heapify again
36+
for(i=n-1;i>=0;i--)
37+
{
38+
temp=arr[0];
39+
arr[0]=arr[i];
40+
arr[i]=temp;
41+
heapify(arr,i,0); //root node swap from 0th index
42+
}
43+
}
44+
int main()
45+
{
46+
int arr[100],n,i;
47+
printf("\n Enter the n of the elements:");
48+
scanf("%d",&n);
49+
printf("Enter the elements:");
50+
for(i=0;i<n;i++)
51+
{
52+
53+
scanf("%d",&arr[i]);
54+
}
55+
heapsort(arr,n);
56+
printf("The Heap Sorted Array is:");
57+
for(i=0;i<n;i++)
58+
{
59+
printf("\t %d",arr[i]);
60+
}
61+
}

0 commit comments

Comments
 (0)