import java.util.ArrayList;
import java.util.List;
public class MaxHeap {
// ArrayList to hold the heap
List h = new ArrayList();
// Constructs the heap - heapify
public BinaryHeap(int[] e) {
for (int i = 0; i < e.length; i++) {
add(e[i]);
}
}
private int intGet(int key) {
return new Integer(h.get(key).toString()).intValue();
}
public void add(int key) {
h.add(null);
int k = h.size() - 1;
while (k > 0) {
int parent = (k - 1) / 2;
int parentValue = new Integer(h.get(parent).toString()).intValue();
// MaxHeap -
// for minheap - if(key > parentValue)
if (key <= parentValue) {
break;
}
h.set(k, parentValue);
k = parent;
}
h.set(k, key);
}
public int getMax() {
return new Integer(h.get(0).toString()).intValue();
}
public void percolateUp(int k, int key) {
if (h.isEmpty())
return;
while (k < h.size() / 2) {
int child = 2 * k + 1; // left child
if (child < h.size() - 1
&& (new Integer(h.get(child).toString()).intValue() < new Integer(
h.get(child + 1).toString()).intValue())) {
child++;
}
if (key >= new Integer(h.get(child).toString()).intValue()) {
break;
}
h.set(k, new Integer(h.get(child).toString()).intValue());
k = child;
}
h.set(k, key);
}
public int remove() {
int removeNode = new Integer(h.get(0).toString()).intValue();
int lastNode = new Integer(h.remove(h.size() - 1).toString())
.intValue();
percolateUp(0, lastNode);
return removeNode;
}
public boolean isEmpty() {
return h.isEmpty();
}
public static void main(String[] args) {
BinaryHeap heap = new BinaryHeap(new int[] { 2, 5, 1 });
while (!heap.isEmpty()) {
System.out.println(heap.remove());
}
}
}
Popular Posts
-
Given the sequence S1 = {a,b,c,d,…,x,y,z,aa,ab,ac…. } and given that this sequence corresponds (term for term) to the sequence S2 = {0,1...
-
Given a binary matrix, find out the maximum size square sub-matrix with all 1s. Algorithm: Let the given binary matrix be M[R][C]. The idea ...
-
The bustling town of Siruseri has just one sports stadium. There are a number of schools, colleges, sports associations, etc. that use this ...
-
Refer : http://education.cdacmumbai.in/education/pgdst/dsalfac/notes/ShellSort.pdf Shellsort works by comparing elements that are distant r...
-
Many of you might not be knowing that if you have 1 gmail id … you have infinte gmail ids… Seems to be a joke.. It’s not actually… for e.g ...
-
How to find kth smallest element in BST . you cannot use static/global variable and you cannot pass value of k to any function ? Solution ...
-
Find the maximum rectangle (in terms of area) under a histogram in linear time. I mean the area of largest rectangle that fits entirely in t...
-
There is an integer array consisting positive and negative integers. Find maximum positive difference S defined as: O(N) solution S = a[i] ...
-
Q: Given an integer x and an unsorted array of integers, describe an algorithm to determine whether two of the numbers add up to x. If we ha...
-
http://effprog.blogspot.com/2011/02/duplicate-removal-in-binary-search-tree.html http://shashank7s.blogspot.com/2011/03/write-program-to-rem...
Sunday, March 27, 2011
Max heap implementation in java
Labels:
Arrays
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment