Heap data structure is an array that can be seen as a complete binary tree .Heap in memory allocation is array thus elements are stored at contingious memory locations it can be represented as complete binary tree,each node of the tree corresponds to an element of the array .

The tree is completely filled on all levels except possibly the lowest,which is filled from the left up to a point.

There are two kinds of binary heaps: max-heaps and min-heaps. In a max-heap, the max-heap property is that for every node i other than the root, the value of a node is at most the value of its parent. Thus, the largest element in a max-heap is stored at the root.

A min-heap is organized in the opposite way, each node is less than or equal to each of its children. Min-heaps are often used to implement priority queues.

Viewing a heap as a tree and a heap of n elements in based on a complete binary tree, its height is O (log n). Basic operations like insert, delete on heaps run in time at most proportional to the height of the tree and the take O (log n) time.

Why use a heap?

A heap can be thought of as a priority queue; the most important node will always be at the top, and when removed, its replacement will be the most important. This can be useful when coding algorithms that require certain things to processed in a complete order, but when you don't want to perform a full sort or need to know anything about the rest of the nodes. For instance, a well-known algorithm for finding the shortest distance between nodes in a graph, Dijkstra's Algorithm, can be optimized by using a priority queue.

Heaps can also be used to sort data. A heap sort is O(nlogn) efficiency, though it is not the fastest possible sorting algorithm.

Efficiency of a heap

Whenever you work with a heap, most of the time taken by the algorithm will be in upheaping and downheaping. As it happens, the maximum number of levels of a complete tree is log(n)+1, where n is the number of nodes in the tree. Because upheap or downheap moves an element from one level to another, the order of adding to or removing from a heap is O(logn), as you can make switches only log(n) times, or one less time than the number of levels in the tree .

Applications of HEAP Data Structures:

  • to overcome the Worst-Case Complexity of Quick Sort algorithm from O(n^2) to O( nlog(n) ) in Heap Sort.

  • find the smallest and largest element from a collection of array

  • In the implementation of the Priority queue in graph algorithms like Dijkstra's algorithm Prim's algorithm and Huffman encoding

Happy Coding 😊

By Programmers Army

Contributed by: Parakh Pratap Singh