This Java program is to implement max heap. A Heap data structure is a Tree based data structure that satisfies the HEAP Property “If A is a parent node of B then key(A) is ordered with respect to key(B) with the same ordering applying across the heap.”
So in a Min Heap this property will be “If A is a parent node of B then key(A) is less than key(B) with the same ordering applying across the heap.” and in a max heap the key(A) will be greater than Key(B).
Here is the source code of the Java program to implement max heap. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
public class MaxHeap { private int[] Heap; private int size; private int maxsize; private static final int FRONT = 1; public MaxHeap(int maxsize) { this.maxsize = maxsize; this.size = 0; Heap = new int[this.maxsize + 1]; Heap[0] = Integer.MAX_VALUE; } private int parent(int pos) { return pos / 2; } private int leftChild(int pos) { return (2 * pos); } private int rightChild(int pos) { return (2 * pos) + 1; } private boolean isLeaf(int pos) { if (pos >= (size / 2) && pos <= size) { return true; } return false; } private void swap(int fpos,int spos) { int tmp; tmp = Heap[fpos]; Heap[fpos] = Heap[spos]; Heap[spos] = tmp; } private void maxHeapify(int pos) { if (!isLeaf(pos)) { if ( Heap[pos] < Heap[leftChild(pos)] || Heap[pos] < Heap[rightChild(pos)]) { if (Heap[leftChild(pos)] > Heap[rightChild(pos)]) { swap(pos, leftChild(pos)); maxHeapify(leftChild(pos)); }else { swap(pos, rightChild(pos)); maxHeapify(rightChild(pos)); } } } } public void insert(int element) { Heap[++size] = element; int current = size; while(Heap[current] > Heap[parent(current)]) { swap(current,parent(current)); current = parent(current); } } public void print() { for (int i = 1; i <= size / 2; i++ ) { System.out.print(" PARENT : " + Heap[i] + " LEFT CHILD : " + Heap[2*i] + " RIGHT CHILD :" + Heap[2 * i + 1]); System.out.println(); } } public void maxHeap() { for (int pos = (size / 2); pos >= 1; pos--) { maxHeapify(pos); } } public int remove() { int popped = Heap[FRONT]; Heap[FRONT] = Heap[size--]; maxHeapify(FRONT); return popped; } public static void main(String...arg) { System.out.println("The Max Heap is "); MaxHeap maxHeap = new MaxHeap(15); maxHeap.insert(5); maxHeap.insert(3); maxHeap.insert(17); maxHeap.insert(10); maxHeap.insert(84); maxHeap.insert(19); maxHeap.insert(6); maxHeap.insert(22); maxHeap.insert(9); maxHeap.maxHeap(); maxHeap.print(); System.out.println("The max val is " + maxHeap.remove()); } }
$javac MaxHeap.java $java MaxHeap The Max Heap is PARENT : 84 LEFT CHILD : 22 RIGHT CHILD :19 PARENT : 22 LEFT CHILD : 17 RIGHT CHILD :10 PARENT : 19 LEFT CHILD : 5 RIGHT CHILD :6 PARENT : 17 LEFT CHILD : 3 RIGHT CHILD :9 The max val is 84
Related posts:
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Set Interface trong Java
Spring Boot - Cloud Configuration Client
Marker Interface trong Java
Jackson – JsonMappingException (No serializer found for class)
Java Program to Implement Johnson’s Algorithm
Java Program to Perform Deletion in a BST
Spring Boot - OAuth2 with JWT
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
JUnit 5 @Test Annotation
Java Program to Implement Double Ended Queue
Control the Session with Spring Security
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
A Guide to Java HashMap
CyclicBarrier in Java
Java Program to Create a Random Linear Extension for a DAG
A Guide to Iterator in Java
Java Program to Solve TSP Using Minimum Spanning Trees
A Custom Data Binder in Spring MVC
Java Program to Describe the Representation of Graph using Incidence Matrix
Date Time trong Java 8
Overflow and Underflow in Java
Java Program to Check if it is a Sparse Matrix
How to Convert List to Map in Java
Java Program to Implement DelayQueue API
Refactoring Design Pattern với tính năng mới trong Java 8
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Spring WebClient Requests with Parameters
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Perform Searching Using Self-Organizing Lists
LinkedList trong java
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java