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 Circular Doubly Linked List
Simple Single Sign-On with Spring Security OAuth2
Java Program to Implement Bellman-Ford Algorithm
Quick Guide to java.lang.System
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Từ khóa static và final trong java
Spring Security Remember Me
Filtering and Transforming Collections in Guava
Java 8 Stream findFirst() vs. findAny()
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Spring Boot - Service Components
Java Program to Implement Karatsuba Multiplication Algorithm
Hướng dẫn Java Design Pattern – Composite
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Guide to ThreadLocalRandom in Java
Java Program to Implement the MD5 Algorithm
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Java Scanner hasNext() vs. hasNextLine()
Java Program to Find Transitive Closure of a Graph
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java InputStream to Byte Array and ByteBuffer
Working with Network Interfaces in Java
The XOR Operator in Java
Returning Image/Media Data with Spring MVC
Beans and Dependency Injection
Java Program to Generate Random Numbers Using Middle Square Method
A Quick Guide to Spring Cloud Consul
Java Program to Implement Splay Tree
Guide to the Fork/Join Framework in Java
Java Program to Optimize Wire Length in Electrical Circuit
Spring 5 and Servlet 4 – The PushBuilder
Zipping Collections in Java