0% found this document useful (0 votes)
12 views3 pages

Experiment No. 5

Uploaded by

Pallu Charde
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views3 pages

Experiment No. 5

Uploaded by

Pallu Charde
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Experiment No.

Aim:- Write a Program for implement of Heap Sort with maxheap.

Theory:- A heap is a complete binary tree, and the binary tree is a tree in which the node can
have the utmost two children. A complete binary tree is a binary tree in which all the levels
except the last level, i.e., leaf node, should be completely filled, and all the nodes should be
left-justified. Heapsort is a popular and efficient sorting algorithm. The concept of heap sort is
to eliminate the elements one by one from the heap part of the list, and then insert them into
the sorted part of the list.Heapsort is the in-place sorting algorithm.Working of Heap Sort-
 First, we convert the list given into a heap.
 Now, the given heap is converted into max-heap.
 Now, the heap is converted into max-heap, then the largest element in the list is stored in
the root of the heap, and further, it is replaced with the last element of the heap.
 This node is deleted, and the heap size is reduced by 1 every time.
 These steps are followed until we get a sorted list.

Program:-
#include <iostream>
using namespace std;
void heapify(int arr[], int n, int i) {
// Find largest among root, left child and right child
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < n && arr[left] > arr[largest])
largest = left;
if (right < n && arr[right] > arr[largest])
largest = right;
// Swap and continue heapifying if root is not largest
if (largest != i) {
swap(arr[i], arr[largest]);
heapify(arr, n, largest);
}
}
// main function to do heap sort
void heapSort(int arr[], int n) {
// Build max heap
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
// Heap sort
for (int i = n - 1; i >= 0; i--) {
swap(arr[0], arr[i]);
// Heapify root element to get highest element at root again
heapify(arr, i, 0);
}
}

// Print an array
void printArray(int arr[], int n) {
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
cout << "\n";
}
// Driver code
int main() {
int n;
cout << "Enter the number of elements: ";
cin >> n;
int arr[n]; //create an array with given number of elements
cout << "Enter elements:" << endl;
for(int i = 0; i<n; i++) {
cin >> arr[i];
}
cout << "Array before Sorting: ";
printArray(arr, n);
heapSort(arr, n);
cout << "Array after Sorting: ";
printArray(arr, n);
}

Output:

Result:- Thus, Implementation of Heap Sort is Performed Successfully.


Viva Questions-

1. What is Heap? Difference between Maxheap and Minheap?


2. Working of HeapSort?
3. Time and Space complexity of heap sort?
4. Heap Sort is based on which Algorithm and recurrence relation of heapsort?
5. What is a binary heap and how do you implement it?

You might also like