public class DoubleIntegerMaxHeap extends Object implements DoubleIntegerHeap
Modifier and Type | Class and Description |
---|---|
private class |
DoubleIntegerMaxHeap.UnsortedIter
Unsorted iterator - in heap order.
|
Modifier and Type | Field and Description |
---|---|
protected int |
size
Current size of heap.
|
private static int |
TWO_HEAP_INITIAL_SIZE
Initial size of the 2-ary heap.
|
protected double[] |
twoheap
Base heap.
|
protected int[] |
twovals
Base heap values.
|
Constructor and Description |
---|
DoubleIntegerMaxHeap()
Constructor, with default size.
|
DoubleIntegerMaxHeap(int minsize)
Constructor, with given minimum size.
|
Modifier and Type | Method and Description |
---|---|
void |
add(double o,
int v)
Add a key-value pair to the heap
|
void |
add(double key,
int val,
int max)
Add a key-value pair to the heap if it improves the top.
|
void |
clear()
Clear the heap contents.
|
private void |
heapifyDown(double cur,
int val)
Invoke heapify-down for the root object.
|
private void |
heapifyUp(int twopos,
double cur,
int val)
Heapify-Up method for 2-ary heap.
|
boolean |
isEmpty()
Is the heap empty?
|
double |
peekKey()
Get the current top key
|
int |
peekValue()
Get the current top value
|
void |
poll()
Remove the first element
|
void |
replaceTopElement(double reinsert,
int val)
Combined operation that removes the top element, and inserts a new element
instead.
|
int |
size()
Query the size
|
String |
toString() |
DoubleIntegerMaxHeap.UnsortedIter |
unsortedIter()
Get an unsorted iterator to inspect the heap.
|
protected double[] twoheap
protected int[] twovals
protected int size
private static final int TWO_HEAP_INITIAL_SIZE
public DoubleIntegerMaxHeap()
public DoubleIntegerMaxHeap(int minsize)
minsize
- Minimum sizepublic void clear()
DoubleIntegerHeap
clear
in interface DoubleIntegerHeap
public int size()
DoubleIntegerHeap
size
in interface DoubleIntegerHeap
public boolean isEmpty()
DoubleIntegerHeap
isEmpty
in interface DoubleIntegerHeap
true
when the size is 0.public void add(double o, int v)
DoubleIntegerHeap
add
in interface DoubleIntegerHeap
o
- Keyv
- Valuepublic void add(double key, int val, int max)
DoubleIntegerHeap
add
in interface DoubleIntegerHeap
key
- Keyval
- Valuemax
- Desired maximum sizepublic void replaceTopElement(double reinsert, int val)
DoubleIntegerHeap
replaceTopElement
in interface DoubleIntegerHeap
reinsert
- Key of new elementval
- Value of new elementprivate void heapifyUp(int twopos, double cur, int val)
twopos
- Position in 2-ary heap.cur
- Current objectval
- Current valuepublic void poll()
DoubleIntegerHeap
poll
in interface DoubleIntegerHeap
private void heapifyDown(double cur, int val)
cur
- Object to insert.val
- Value to reinsert.public double peekKey()
DoubleIntegerHeap
peekKey
in interface DoubleIntegerHeap
public int peekValue()
DoubleIntegerHeap
peekValue
in interface DoubleIntegerHeap
public DoubleIntegerMaxHeap.UnsortedIter unsortedIter()
DoubleIntegerHeap
unsortedIter
in interface DoubleIntegerHeap