Heap in JavaScript Last Updated : 17 Nov, 2024 Comments Improve Suggest changes Like Article Like Report A Heap is a special Tree-based Data Structure that has the following properties.It is a complete Complete Binary Tree.It either follows max heap or min heap property.A Min-Heap is a complete binary tree in which the value in each node is smaller than all of its descendants.A Max-Heap is a complete binary in which root node must be the greatest among all its descendant nodes and the same thing must be done for its left and right sub-tree also.Min HeapMapping the elements of a heap into an array is trivial: if a node is stored an index k, then its left child is stored at index 2k + 1 and its right child at index 2k + 2.Min Heap in JavaScriptHow is Min Heap represented? Let us go through the representation of Min heap. So basically Min Heap is a complete binary tree. A Min heap is typically represented as an array. The root element will be at Arr[0]. For any ith node, i.e., Arr[i] Arr[(i -1) / 2] returns its parent node.Arr[(2 * i) + 1] returns its left child node.Arr[(2 * i) + 2] returns its right child node.Operations of Heap Data Structure:Heapify: a process of creating a heap from an array.Insertion: process to insert an element in existing heap time complexity O(log N).Deletion: deleting the top element of the heap or the highest priority element, and then organizing the heap and returning the element with time complexity O(log N).Peek: to check or find the most prior element in the heap, (max or min element for max and min heap).Explanation: Now let us understand how the various helper methods maintain the order of the heapThe helper methods like rightChild, leftChild, and parent help us to get the element and its children at the specified index.The add() and remove() methods handle the insertion and deletion processThe heapifyDown() method maintains the heap structure when an element is deleted.The heapifyUp() method maintains the heap structure when an element is added to the heap. The peek() method returns the root element of the heap and swap() method interchanges value at two nodes.Example: In this example, we will implement the Min Heap data structure. JavaScript // JavaScript code to depict // the implementation of a max heap. class MaxHeap { constructor(maxSize) { // the array in the heap. this.arr = new Array(maxSize).fill(null); // Maximum possible size of // the Max Heap. this.maxSize = maxSize; // Number of elements in the // Max heap currently. this.heapSize = 0; } // Heapifies a sub-tree taking the // given index as the root. MaxHeapify(i) { const l = this.lChild(i); const r = this.rChild(i); let largest = i; if (l < this.heapSize && this.arr[l] > this.arr[i]) { largest = l; } if (r < this.heapSize && this.arr[r] > this.arr[largest]) { largest = r; } if (largest !== i) { const temp = this.arr[i]; this.arr[i] = this.arr[largest]; this.arr[largest] = temp; this.MaxHeapify(largest); } } // Returns the index of the parent // of the element at ith index. parent(i) { return Math.floor((i - 1) / 2); } // Returns the index of the left child. lChild(i) { return 2 * i + 1; } // Returns the index of the // right child. rChild(i) { return 2 * i + 2; } // Removes the root which in this // case contains the maximum element. removeMax() { // Checking whether the heap array // is empty or not. if (this.heapSize <= 0) { return null; } if (this.heapSize === 1) { this.heapSize -= 1; return this.arr[0]; } // Storing the maximum element // to remove it. const root = this.arr[0]; this.arr[0] = this.arr[this.heapSize - 1]; this.heapSize -= 1; // To restore the property // of the Max heap. this.MaxHeapify(0); return root; } // Increases value of key at // index 'i' to new_val. increaseKey(i, newVal) { this.arr[i] = newVal; while (i !== 0 && this.arr[this.parent(i)] < this.arr[i]) { const temp = this.arr[i]; this.arr[i] = this.arr[this.parent(i)]; this.arr[this.parent(i)] = temp; i = this.parent(i); } } // Returns the maximum key // (key at root) from max heap. getMax() { return this.arr[0]; } curSize() { return this.heapSize; } // Deletes a key at given index i. deleteKey(i) { // It increases the value of the key // to infinity and then removes // the maximum value. this.increaseKey(i, Infinity); this.removeMax(); } // Inserts a new key 'x' in the Max Heap. insertKey(x) { // To check whether the key // can be inserted or not. if (this.heapSize === this.maxSize) { console.log("\nOverflow: Could not insertKey\n"); return; } let i = this.heapSize; this.arr[i] = x; // The new key is initially // inserted at the end. this.heapSize += 1; // The max heap property is checked // and if violation occurs, // it is restored. while (i !== 0 && this.arr[this.parent(i)] < this.arr[i]) { const temp = this.arr[i]; this.arr[i] = this.arr[this.parent(i)]; this.arr[this.parent(i)] = temp; i = this.parent(i); } } } // Driver program to test above functions. // Assuming the maximum size of the heap to be 15. const h = new MaxHeap(15); // Asking the user to input the keys: console.log("Entered 6 keys:- 3, 10, 12, 8, 2, 14 \n"); h.insertKey(3); h.insertKey(10); h.insertKey(12); h.insertKey(8); h.insertKey(2); h.insertKey(14); // Printing the current size // of the heap. console.log( "The current size of the heap is " + h.curSize() + "\n" ); // Printing the root element which is // actually the maximum element. console.log( "The current maximum element is " + h.getMax() + "\n" ); // Deleting key at index 2. h.deleteKey(2); // Printing the size of the heap // after deletion. console.log( "The current size of the heap is " + h.curSize() + "\n" ); // Inserting 2 new keys into the heap. h.insertKey(15); h.insertKey(5); console.log( "The current size of the heap is " + h.curSize() + "\n" ); console.log( "The current maximum element is " + h.getMax() + "\n" ); // Contributed by sdeadityasharma Output 10 15 30 40 50 100 40 10 10 15 40 30 40 50 100 Max HeapPlease refer Max Heap in JavaScript for details. Comment More infoAdvertise with us Next Article Heap in JavaScript S shobhit_sharma Follow Improve Article Tags : Heap JavaScript Web Technologies DSA min-heap +1 More Practice Tags : Heap Similar Reads Learn Data Structures with Javascript | DSA using JavaScript Tutorial JavaScript (JS) is the most popular lightweight, interpreted programming language, and might be your first preference for Client-side as well as Server-side developments. But have you thought about using JavaScript for DSA? Learning Data Structures and Algorithms can be difficult when combined with 7 min read Learn Algorithms with Javascript | DSA using JavaScript Tutorial This Algorithms with Javascript tutorial is designed to help you understand and implement fundamental algorithms using the versatile JavaScript programming language. Whether you are a beginner in programming or looking to enhance your algorithmic skills, this guide will walk you through essential co 15+ min read MathematicalJavaScript Program to Check for Palindrome NumberWe are going to learn about Palindrome Numbers in JavaScript. A palindrome number is a numerical sequence that reads the same forwards and backward, It remains unchanged even when reversed, retaining its original identity. Example: Input : Number = 121Output : PalindromeInput : Number = 1331Output : 4 min read JavaScript - Factorial of a Number in JS The factorial of a non-negative integer is the product of all positive integers less than or equal to that number. Itâs denoted by ân!â where n is the integer. Here are the various methods to find the factorial of a number in JavaScript.Logicx!= 1*(x-3)*(x-2)*(x-1).......xNote: Factorials of negativ 3 min read JavaScript Program to Find GCD or HCF of Two NumbersGCD (Greatest Common Divisor) or HCF (Highest Common Factor) of two numbers is the largest positive integer that divides both numbers without leaving a remainder. GCD ( a, b ) = [ |a.b| ] / [ lcm(a, b) ]or,HCF of factors = Product of the Numbers/ LCM of numbersExample: Input: a = 20, b = 28Output: 4 3 min read JavaScript Program to Find LCM of Two NumbersIn this article, we are going to learn about finding the LCM of two numbers by using JavaScript. LCM (Least Common Multiple) of two numbers is the smallest positive integer that is divisible by both numbers without leaving a remainder. It's a common multiple of the numbers. LCM of two numbers = Prod 4 min read Check a Number is Prime or Not Using JavaScriptA prime number is a whole number greater than 1, which has no positive divisors other than 1 and itself. In other words, prime numbers cannot be formed by multiplying two smaller natural numbers. For example:2, 3, 5, 7, 11, and 13 are prime numbers.4, 6, 8, 9, and 12 are not prime numbers because th 5 min read JavaScript Program to Find Prime FactorsIn this article, we will see all the methods to find the prime factors of a number using JavaScript. Methods to Find Prime Factors: Table of Content Using loops and Math.pow() MethodRecursive Approach with Spread OperatorSieve of Eratosthenes AlgorithmMethod 1: Using loops and Math.pow() MethodIn th 3 min read JavaScript Program for Sieve of EratosthenesIn this article, we will be demonstrating a JavaScript program for the Sieve of Eratosthenes algorithm. The Sieve of Eratosthenes algorithm is an efficient way of getting all the prime numbers that exist in the given range e.g., Input: n =10Output: 2 3 5 7 Input: n = 20 Output: 2 3 5 7 11 13 17 19Ap 2 min read JavaScript Program to Compute Power of a NumberIn this article, we will demonstrate different approaches for computing the Power of a Number using JavaScript. The Power of a Number can be computed by raising a number to a certain exponent. It can be denoted using a^b, where the 'a' represents the base number & the 'b' represents the number t 3 min read RecursionRecursion Guide in JavaScriptRecursion is a process in which a function calls itself as a subroutine. This allows the function to be repeated several times, as it can call itself during its execution. Recursion is often used to solve problems that can be broken down into smaller, similar subproblems.Syntax:JavaScriptfunction re 4 min read Applications of Recursion in JavaScriptRecursion is a programming technique in which a function calls itself directly or indirectly. Using a recursive algorithm, certain problems can be solved quite easily. Examples of such problems are Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph, etc. Recursion is a t 7 min read JavaScript Program to Print N to 1 using RecursionIn this article, we will see how to print N to 1 using Recursion in JavaScript. What is Recursion? The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. In the recursive program, the solution to the base 1 min read JavaScript Program to Print 1 to N using RecursionIn this article, we will see how to print 1 to N using Recursion in JavaScript. What is Recursion? The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. In the recursive program, the solution to the base 2 min read JavaScript Program to Check for Palindrome String using RecursionGiven a string, write a recursive function that checks if the given string is a palindrome, else, not a palindrome. A string is called a palindrome if the reverse of the string is the same as the original one. For example - âmadamâ, âracecarâ, etc.What is Recursion?The process in which a function ca 3 min read JavaScript Program for Sum of Digits of a Number using RecursionWe are given a number as input and we have to find the sum of all the digits contained by it. We will split the digits of the number and add them together using recursion in JavaScript. Table of Content Recursively Summing DigitsUsing string manipulation with recursionRecursively Summing DigitsIn th 2 min read ArrayCreate an Array of Given Size in JavaScriptThe basic method to create an array is by using the Array constructor. We can initialize an array of certain length just by passing a single integer argument to the JavaScript array constructor. This will create an array of the given size with undefined values.Syntaxconst arr = new Array( length );J 3 min read JavaScript - Access Elements in JS ArrayThese are the following ways to Access Elements in an Array:1. Using Square Bracket NotationWe can access elements in an array by using their index, where the index starts from 0 for the first element. We can access using the bracket notation.JavaScriptconst a = [10, 20, 30, 40, 50]; const v = a[3]; 2 min read JavaScript - Max Element in an ArrayThese are the following ways to find the largest element in JS array: Note: You must add a conditional check for checking whether the given array is empty or not, if the array is not empty then you can use the given below approaches to find out the largest element among them. 1. Using the Spread Ope 4 min read JavaScript Program to Check an Array is Sorted or NotIn this article, we will learn how to check if the array is sorted in JavaScript. JavaScript Array is a single variable that is used to store elements of different data types. Now, we have to find whether the array is sorted or not.Examples:Input : const arr = [1, 2, 3, 4, 5]; Output : trueInput : c 4 min read Reverse an Array in JavaScriptHere are the different methods to reverse an array in JavaScript1. Using the reverse() MethodJavaScript provides a built-in array method called reverse() that reverses the elements of the array in place. This method mutates the original array and returns the reversed array.JavaScriptlet a = [1, 2, 3 3 min read Javascript Program to Move all zeroes to end of arrayGiven an array of random numbers, Push all the zero's of a given array to the end of the array. For example, if the given arrays is {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, it should be changed to {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}. The order of all other elements should be same. Expected time complexity i 3 min read JavaScript Program for Left Rotate by One in an ArrayIn this article, we are going to learn about left Rotation by One in an Array by using JavaScript, Left rotation by one in an array means shifting all elements from one position to the left, with the last element moving to the first position. The order of elements is cyclically rotated while maintai 5 min read SearchingBinary Search In JavaScriptBinary Search is a searching technique that works on the Divide and Conquer approach. It is used to search for any element in a sorted array. Compared with linear, binary search is much faster with a Time Complexity of O(logN), whereas linear search works in O(N) time complexityExamples: Input : arr 3 min read JavaScript Program to Find Index of First Occurrence of Target Element in Sorted ArrayIn this article, we will see the JavaScript program to get the first occurrence of a number in a sorted array. We have the following methods to get the first occurrence of a given number in the sorted array.Methods to Find the Index of the First Occurrence of the element in the sorted arrayTable of 6 min read JavaScript Program to find the Index of Last Occurrence of Target Element in Sorted ArrayIn this article, we will see the JavaScript program to get the last occurrence of a number in a sorted array. We have the following methods to get the last occurrence of a given number in the sorted array. Methods to Find the Index of the Last Occurrence of the Target Element in the Sorted ArrayUsin 4 min read Count number of occurrences (or frequency) in a sorted arrayGiven a sorted array arr[] and an integer target, the task is to find the number of occurrences of target in given array.Examples:Input: arr[] = [1, 1, 2, 2, 2, 2, 3], target = 2Output: 4Explanation: 2 occurs 4 times in the given array.Input: arr[] = [1, 1, 2, 2, 2, 2, 3], target = 4Output: 0Explana 9 min read JavaScript Program to Find the Square RootGiven a number N, the task is to calculate the square root of a given number using JavaScript. There are the approaches to calculate the square root of the given number, these are: Approaches to Find the Square Root of Given Number in JavaScript: Table of Content Using Math.sqrt() MethodUsing JavaSc 5 min read SortingSorting Algorithms in JavaScriptSorting is an important operation in computer science that arranges elements of an array or list in a certain order (either ascending or descending).Example:Input: [64, 34, 25, 12, 22, 11, 90]Output: [11, 12, 22, 25, 34, 64, 90] Input: [1, 2, -3, 3, 4, 5]Output: [-3, 1, 2, 3, 4, 5] Table of ContentB 5 min read Bubble Sort algorithm using JavaScriptBubble sort algorithm is an algorithm that sorts an array by comparing two adjacent elements and swapping them if they are not in the intended order. Here order can be anything like increasing or decreasing. How Bubble-sort works?We have an unsorted array arr = [ 1, 4, 2, 5, -2, 3 ], and the task is 4 min read JavaScript Program for Selection SortWhat is Selection Sort in JavaScript?Selection sort is a simple and efficient algorithm that works on selecting either the smallest or the largest element of the list or array and moving it to the correct position. Working of Selection SortConsider the following arrayarr = [ 64, 25, 12, 22, 11]This 3 min read JavaScript Program for Insertion SortWhat is Insertion Sort Algorithm?Insertion sorting is one of the sorting techniques that is based on iterating the array and finding the right position for every element. It compares the current element to the predecessors, if the element is small compare it with the elements before. Move ahead to a 4 min read JavaScript Program for Merge SortWhat is Merge Sort Algorithm?Merge sort is one of the sorting techniques that work on the divide and conquer approach. The Given array is divided in half again and again and those parts are arranged in sorted order and merged back to form the complete sorted array. Working of Merge SortTo Understand 3 min read JavaScript Program to Merge two Sorted Arrays into a Single Sorted ArrayIn this article, we will cover how to merge two sorted arrays into a single sorted array in JavaScript. Given there are two sorted arrays, we need to merge them into a single sorted array in JavaScript. We will see the code for each approach along with the output. Below are the possible approaches t 3 min read Javascript Program For Counting Inversions In An Array - Set 1 (Using Merge Sort)Inversion Count for an array indicates - how far (or close) the array is from being sorted. If the array is already sorted, then the inversion count is 0, but if the array is sorted in the reverse order, the inversion count is the maximum. Formally speaking, two elements a[i] and a[j] form an invers 5 min read JavaScript - Union of ArraysIn JavaScript, finding the union of multiple arrays means combining their elements into a single array with only unique values. Here are several methods to compute the union of JavaScript ArraysUsing Spread Operator with Set - Most PopularWe can use the Set object along with the spread operator to f 3 min read Quick Sort(Lomuto Partition) Visualization using JavaScriptGUI(Graphical User Interface) helps in better in understanding than programs. In this article, we will visualize Quick Sort using JavaScript. We will see how the array is being partitioned using Lomuto Partition and then how we get the final sorted array. We will also visualize the time complexity o 4 min read How to Create an Array using Intersection of two Arrays in JavaScript ?In this article, we will try to understand how to create an array using the intersection values of two arrays in JavaScript using some coding examples. For Example: arr1 = [1, 3, 5, 7, 9, 10, 14, 15]arr2 = [1, 2, 3, 7, 10, 11, 13, 14]result_arr = [1, 3, 7, 10, 14]Approach 1: We will see the native a 3 min read JavaScript Program for Quick SortWhat is Quick Sort Algorithm?Quick sort is one of the sorting algorithms that works on the idea of divide and conquer. It takes an element as a pivot and partitions the given array around that pivot by placing it in the correct position in the sorted array. The pivot element can be selected in the f 4 min read HashingHashing in JavaScriptHashing is a popular technique used for storing and retrieving data as fast as possible. The main reason behind using hashing is that it performs insertion, deletion, searching, and other operations Why use Hashing?In hashing, all the operations like inserting, searching, and deleting can be perform 6 min read Set in JavaScriptA Set in JavaScript is used to store a unique collection of items, meaning no duplicates are allowed. Sets internally use a hash table which makes search, insert and delete operations faster than arrays. Please note that a hash table data structure allows these operations to be performed on average 4 min read StringJavaScript StringsA JavaScript String is a sequence of characters, typically used to represent text. In JavaScript, there is no character type (Similar to Python and different from C, C++ and Java), so a single character string is used when we need a character.Like Java and Python, strings in JavaScript are immutable 6 min read Palindrome in JavaScriptWe will understand how to check whether a given value is a palindrome or not in JavaScript. A palindrome is a word, phrase, number, or any sequence that reads the same forward and backward. For instance, "madam" and "121" are palindromes.To perform this check we will use the following approaches:Tab 3 min read Javascript Program To Check Whether Two Strings Are Anagram Of Each OtherWrite a function to check whether two given strings are anagram of each other or not. An anagram of a string is another string that contains the same characters, only the order of characters can be different. For example, "abcd" and "dabc" are an anagram of each other.Method 1 (Use Sorting):Sort bot 6 min read Javascript Program To Reverse Words In A Given StringExample: Let the input string be "i like this program very much". The function should change the string to "much very program this like i"Examples: Input: s = "geeks quiz practice code" Output: s = "code practice quiz geeks"Input: s = "getting good at coding needs a lot of practice" Output: s = "pra 4 min read How to Get Character of Specific Position using JavaScript ?Get the Character of a Specific Position Using JavaScript We have different approaches, In this article we are going to learn how to Get the Character of a Specific Position using JavaScript Below are the methods to get the character at a specific position using JavaScript: Table of Content Method 1 4 min read How to generate all combinations of a string in JavaScript ?We are going to see if we can generate all the possible combinations of a given string using JavaScript methods or concepts. You are given a string, containing different characters, you need to generate all combinations of a string by selecting a character at once and then re-arranging that characte 4 min read Linked ListImplementation of LinkedList in JavascriptIn this article, we will be implementing the LinkedList data structure in Javascript.A linked list is a linear data structure where elements are stored in nodes, each containing a value and a reference (or pointer) to the next node. It allows for efficient insertion and deletion operations.Each node 5 min read Javascript Program For Searching An Element In A Linked ListWrite a function that searches a given key 'x' in a given singly linked list. The function should return true if x is present in linked list and false otherwise.bool search(Node *head, int x) For example, if the key to be searched is 15 and linked list is 14->21->11->30->10, then functio 3 min read Javascript Program For Inserting A Node In A Linked ListWe have introduced Linked Lists in the previous post. We also created a simple linked list with 3 nodes and discussed linked list traversal.All programs discussed in this post consider the following representations of the linked list. JavaScript// Linked List Class // Head of list let head; // Node 7 min read Javascript Program For Inserting Node In The Middle Of The Linked ListGiven a linked list containing n nodes. The problem is to insert a new node with data x at the middle of the list. If n is even, then insert the new node after the (n/2)th node, else insert the new node after the (n+1)/2th node.Examples: Input : list: 1->2->4->5 x = 3Output : 1->2->3- 4 min read Javascript Program For Writing A Function To Delete A Linked ListA linked list is a linear data structure, in which the elements are not stored at contiguous memory locations. The elements in a linked list are linked using pointers. This article focuses on writing a function to delete a linked list.Implementation: JavaScript// Javascript program to delete // a li 1 min read Javascript Program For Deleting A Linked List Node At A Given PositionGiven a singly linked list and a position, delete a linked list node at the given position.Example: Input: position = 1, Linked List = 8->2->3->1->7Output: Linked List = 8->3->1->7Input: position = 0, Linked List = 8->2->3->1->7Output: Linked List = 2->3->1- 3 min read Javascript Program For Finding Length Of A Linked ListWrite a function to count the number of nodes in a given singly linked list.For example, the function should return 5 for linked list 1->3->1->2->1.Iterative Solution: 1) Initialize count as 0 2) Initialize a node pointer, current = head.3) Do following while current is not NULL a) curre 3 min read Javascript Program For Rotating A Linked ListGiven a singly linked list, rotate the linked list counter-clockwise by k nodes. Where k is a given positive integer. For example, if the given linked list is 10->20->30->40->50->60 and k is 4, the list should be modified to 50->60->10->20->30->40. Assume that k is smal 5 min read Javascript Program For Finding The Middle Element Of A Given Linked ListGiven a singly linked list, find the middle of the linked list. For example, if the given linked list is 1->2->3->4->5 then the output should be 3. If there are even nodes, then there would be two middle nodes, we need to print the second middle element. For example, if given linked list 4 min read JavaScript Program to Reverse a Linked ListA linked list is a data structure where elements are stored in nodes, and each node points to the next node in the sequence. Reversing a linked list involves changing the direction of the pointers, making the last node the new head and the head the new tail. Below are the approaches to reverse a lin 3 min read Like