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 PriorityQueue API
Converting Iterator to List
Summing Numbers with Java Streams
Wrapper Classes in Java
Reversing a Linked List in Java
Vector trong Java
Map to String Conversion in Java
Spring @RequestParam Annotation
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Java Program to Implement Randomized Binary Search Tree
The Registration Process With Spring Security
Lập trình hướng đối tượng (OOPs) trong java
Introduction to Netflix Archaius with Spring Cloud
Tips for dealing with HTTP-related problems
Java Program to Implement Booth Algorithm
Serialization và Deserialization trong java
Returning Image/Media Data with Spring MVC
Guide to System.gc()
Send email with SMTPS (eg. Google GMail)
Apache Tiles Integration with Spring MVC
Creating a Custom Starter with Spring Boot
OAuth2 Remember Me with Refresh Token
Java Program to Implement CopyOnWriteArrayList API
The XOR Operator in Java
Tính kế thừa (Inheritance) trong java
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
How to Convert List to Map in Java
Java Program to Implement Hash Tables with Quadratic Probing
How to Get All Dates Between Two Dates?
Java – String to Reader
Hướng dẫn Java Design Pattern – Proxy
Convert a Map to an Array, List or Set in Java