Skip to content

Commit

Permalink
Create heap_sort.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
aditya7302 authored Oct 18, 2022
1 parent 999ffbf commit 95254c2
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions heap_sort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@

#include <iostream>
using namespace std;

void heapify(int arr[], int N, int i)
{

int largest = i;

int l = 2 * i + 1;

int r = 2 * i + 2;

if (l < N && arr[l] > arr[largest])
largest = l;

if (r < N && arr[r] > arr[largest])
largest = r;

if (largest != i)
{
swap(arr[i], arr[largest]);

heapify(arr, N, largest);
}
}

void heapSort(int arr[], int N)
{

for (int i = N / 2 - 1; i >= 0; i--)
heapify(arr, N, i);

for (int i = N - 1; i > 0; i--)
{

swap(arr[0], arr[i]);

heapify(arr, i, 0);
}
}

void printArray(int arr[], int N)
{
for (int i = 0; i < N; ++i)
cout << arr[i] << " ";
cout << "\n";
}

int main()
{
int arr[] = {12, 11, 13, 5, 6, 7};
int N = sizeof(arr) / sizeof(arr[0]);

heapSort(arr, N);

cout << "Sorted array is \n";
printArray(arr, N);
}

0 comments on commit 95254c2

Please sign in to comment.