V
- Value typepublic class IntegerObjectMinHeap<V> extends Object implements IntegerObjectHeap<V>
Modifier and Type | Class and Description |
---|---|
private class |
IntegerObjectMinHeap.UnsortedIter
Unsorted iterator - in heap order.
|
Modifier and Type | Field and Description |
---|---|
private static int |
FOUR_HEAP_INITIAL_SIZE
Initial size of 4-ary heap when initialized.
21 = 4-ary heap of height 2: 1 + 4 + 4*4
85 = 4-ary heap of height 3: 21 + 4*4*4
341 = 4-ary heap of height 4: 85 + 4*4*4*4
Since we last grew by 255 (to 511), let's use 341.
|
protected int[] |
fourheap
Extension heap.
|
protected Object[] |
fourvals
Extension heapvalues.
|
protected int |
modCount
(Structural) modification counter.
|
protected int |
size
Current size of heap.
|
private static int |
TWO_HEAP_INITIAL_SIZE
Initial size of the 2-ary heap.
|
private static int |
TWO_HEAP_MAX_SIZE
Maximum size of the 2-ary heap.
|
protected int[] |
twoheap
Base heap.
|
protected Object[] |
twovals
Base heap values.
|
Constructor and Description |
---|
IntegerObjectMinHeap()
Constructor, with default size.
|
IntegerObjectMinHeap(int minsize)
Constructor, with given minimum size.
|
Modifier and Type | Method and Description |
---|---|
void |
add(int o,
V v)
Add a key-value pair to the heap
|
void |
add(int key,
V 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(int reinsert,
Object val)
Invoke heapify-down for the root object.
|
private void |
heapifyDown2(int twopos,
int cur,
Object val)
Heapify-Down for 2-ary heap.
|
private void |
heapifyDown4(int fourpos,
int cur,
Object val)
Heapify-Down for 4-ary heap.
|
private void |
heapifyUp2(int twopos,
int cur,
Object val)
Heapify-Up method for 2-ary heap.
|
private void |
heapifyUp4(int fourpos,
int cur,
Object val)
Heapify-Up method for 4-ary heap.
|
boolean |
isEmpty()
Is the heap empty?
|
int |
peekKey()
Get the current top key
|
V |
peekValue()
Get the current top value
|
void |
poll()
Remove the first element
|
void |
replaceTopElement(int reinsert,
V val)
Combined operation that removes the top element, and inserts a new element
instead.
|
int |
size()
Query the size
|
String |
toString() |
IntegerObjectMinHeap.UnsortedIter |
unsortedIter()
Get an unsorted iterator to inspect the heap.
|
protected int[] twoheap
protected Object[] twovals
protected int[] fourheap
protected Object[] fourvals
protected int size
protected int modCount
private static final int TWO_HEAP_MAX_SIZE
private static final int TWO_HEAP_INITIAL_SIZE
private static final int FOUR_HEAP_INITIAL_SIZE
public IntegerObjectMinHeap()
public IntegerObjectMinHeap(int minsize)
minsize
- Minimum sizepublic void clear()
IntegerObjectHeap
clear
in interface IntegerObjectHeap<V>
public int size()
IntegerObjectHeap
size
in interface IntegerObjectHeap<V>
public boolean isEmpty()
IntegerObjectHeap
isEmpty
in interface IntegerObjectHeap<V>
true
when the size is 0.public void add(int o, V v)
IntegerObjectHeap
add
in interface IntegerObjectHeap<V>
o
- Keyv
- Valuepublic void add(int key, V val, int max)
IntegerObjectHeap
add
in interface IntegerObjectHeap<V>
key
- Keyval
- Valuemax
- Desired maximum sizepublic void replaceTopElement(int reinsert, V val)
IntegerObjectHeap
replaceTopElement
in interface IntegerObjectHeap<V>
reinsert
- Key of new elementval
- Value of new elementprivate void heapifyUp2(int twopos, int cur, Object val)
twopos
- Position in 2-ary heap.cur
- Current objectval
- Current valueprivate void heapifyUp4(int fourpos, int cur, Object val)
fourpos
- Position in 4-ary heap.cur
- Current objectval
- Current valuepublic void poll()
IntegerObjectHeap
poll
in interface IntegerObjectHeap<V>
private void heapifyDown(int reinsert, Object val)
reinsert
- Object to insert.val
- Value to reinsert.private void heapifyDown2(int twopos, int cur, Object val)
twopos
- Position in 2-ary heap.cur
- Current objectval
- Value to reinsert.private void heapifyDown4(int fourpos, int cur, Object val)
fourpos
- Position in 4-ary heap.cur
- Current objectval
- Value to reinsert.public int peekKey()
IntegerObjectHeap
peekKey
in interface IntegerObjectHeap<V>
public V peekValue()
IntegerObjectHeap
peekValue
in interface IntegerObjectHeap<V>
public IntegerObjectMinHeap.UnsortedIter unsortedIter()
IntegerObjectHeap
unsortedIter
in interface IntegerObjectHeap<V>