Java Program to Implement Max Heap

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:

How to Get the Last Element of a Stream in Java?
Java Program to Implement Find all Cross Edges in a Graph
Hướng dẫn Java Design Pattern – Strategy
Extract links from an HTML page
Java Program to Implement Shoelace Algorithm
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Guide to Guava Table
Java Program to Implement Pagoda
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java Program to Implement Rope
Send email with SMTPS (eg. Google GMail)
The Dining Philosophers Problem in Java
Unsatisfied Dependency in Spring
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Java Program to Implement Iterative Deepening
Java Program to Perform Searching in a 2-Dimension K-D Tree
Derived Query Methods in Spring Data JPA Repositories
Java Program to Implement Lloyd’s Algorithm
How to Replace Many if Statements in Java
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Spring Boot: Customize the Jackson ObjectMapper
Inject Parameters into JUnit Jupiter Unit Tests
Convert a Map to an Array, List or Set in Java
Hashtable trong java
Java Program to Implement Fibonacci Heap
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
A Guide to Java HashMap
Spring Boot - Google OAuth2 Sign-In
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Java Program to Permute All Letters of an Input String
Java Program to Implement Vector API