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:
Giới thiệu Json Web Token (JWT)
Java Program to Implement the Vigenere Cypher
So sánh HashSet, LinkedHashSet và TreeSet trong Java
How to Kill a Java Thread
Java Program to Solve Tower of Hanoi Problem using Stacks
Changing Annotation Parameters At Runtime
Spring Boot - Application Properties
Java 8 and Infinite Streams
Convert Character Array to String in Java
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Java Program to Implement Flood Fill Algorithm
LinkedHashSet trong Java hoạt động như thế nào?
Giới thiệu Java 8
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Java Program to Find Path Between Two Nodes in a Graph
Primitive Type Streams in Java 8
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Feign – Tạo ứng dụng Java RESTful Client
Cơ chế Upcasting và Downcasting trong java
Java Program to Perform the Unique Factorization of a Given Number
Java Program to Check Whether a Given Point is in a Given Polygon
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Implement Min Heap
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Java Program to Compute the Area of a Triangle Using Determinants
Java Program to Compute Cross Product of Two Vectors
Java Program to Implement Shell Sort
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Java Program to Implement Hash Tables chaining with Singly Linked Lists
So sánh ArrayList và LinkedList trong Java
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint