Whats is Heap Sort ?

Heap is a binary tree based data structure. A binary tree has a parent who has two nodes or children at most. A tree is a hierarchy based data structure, you have a certain order in placing the elements.

Who Invented Heap Sort ?

Heapsort was invented by J. W. J. Williams in 1964.

Working

Firstly the un-sorted list and we create a Heap data structure(Max-Heap or Min-Heap). Now you can put the first element of the heap in your array (the first element of the Heap is either largest or smallest(depending upon Max-Heap or Min-Heap)). Again make heap using remaining list data. pick first element and put this into array. This process is repeated until list complete sorted.
Program

 

//Heap Sort
#include<iostream.h>
#include<conio.h>
//Display function
void display(int array[],int size){
for(int i=0;i<size;i++){
cout<<array[i];
(size==i+1)? cout<<".": cout<<",";
}
}
//Swap Function
void swap(int array[],int left,int right){
//Interchange Two Element in Array
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
//Heapify Function
void Heapify(int input[],int n,int i){
int largest = i;
int l = i + 1;
int r = i + 2;
if (l < n && input[l] > input[largest])
largest = l;
if (r < n && input[r] > input[largest])
largest = r;
if (largest != i){
int left = i;
int right= largest;
swap(input,left,right);
Heapify(input, n, largest);
}
}
//Sort Heap
void SortHeap(int array[],int size){
for (int i = size - 1; i >= 0; i--){
Heapify(array, size, i);
}
for (int j = size - 1; j >= 0; j--){
int left = 0;
int right= j;

swap(array,left,right);
Heapify(array, j, 0);
}
}
//Main Function
void main(){
clrscr(); //Clear Screen
int array[10]={45,65,55,75,12,59,89,49,62,20}; // Array
int size=10; //Size
cout<<"\n ------ Heap Sort ------ ";
cout<<"\nBefore Sorting\n";
display(array,size); //Display Before Sort
SortHeap(array,size); //Heap Sorting
cout<<"\nAfter Sorting\n";
display(array,size); //Display After Sorting
getch();
}

 

Output

 

(Visited 115 times, 1 visits today)
Share with Friends :
Written by:

Leave a Reply

Your email address will not be published. Required fields are marked *