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 8 – Powerful Comparison with Lambdas
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
How to Implement Caching using Adonis.js 5
Guide to ThreadLocalRandom in Java
Java Program to Search for an Element in a Binary Search Tree
Request a Delivery / Read Receipt in Javamail
Display Auto-Configuration Report in Spring Boot
Java Program to Implement Heap
Giới thiệu Google Guice – Dependency injection (DI) framework
Spring Boot Integration Testing with Embedded MongoDB
Introduction to Spring Data JDBC
Jackson Date
Java Program to find the number of occurrences of a given number using Binary Search approach
Tiêu chuẩn coding trong Java (Coding Standards)
Spring Boot - Google OAuth2 Sign-In
Java Program to Construct an Expression Tree for an Infix Expression
Java Program to Implement Range Tree
Java Program to Find a Good Feedback Edge Set in a Graph
Hướng dẫn sử dụng luồng vào ra ký tự trong Java
Spring Autowiring of Generic Types
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Spring WebClient Filters
Introduction to the Java NIO2 File API
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Generic Constructors in Java
Sending Emails with Java
Java – File to Reader
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
New Stream Collectors in Java 9
Java Program to Implement Ternary Tree
Java Program to Implement Self Balancing Binary Search Tree
OAuth 2.0 Resource Server With Spring Security 5