6template <
class Key,
class Value>
10template <
class Key,
class Value>
20 Heap2(Key sup, Key infimum,
int cap):
size(0),capacity(cap) {
22 data[0].
key = infimum;
23 data[capacity + 1].key = sup;
46template <
class Key,
class Value>
50 Key sup = getSupremum();
52 for (
int i = 1; i <= cap; i++) {
60template <
class Key,
class Value>
72 Key key1 = dat[succ].key;
73 Key key2 = dat[succ + 1].key;
77 dat[hole].value = dat[succ].value;
80 dat[hole].value = dat[succ].value;
87 Key bubble = dat[sz].key;
89 while (dat[pred].key > bubble) {
90 dat[hole] = dat[pred];
96 dat[hole].key = bubble;
97 dat[hole].value = dat[sz].value;
99 dat[
size].key = getSupremum();
106template <
class Key,
class Value>
111 const Key sup = getSupremum();
112 Element *
const beyond = to + sz;
113 Element *
const root = data + 1;
114 while (to < beyond) {
123 Key key1 = data[succ ].key;
124 Key key2 = data[succ + 1].key;
127 data[hole].key = key2;
128 data[hole].value = data[succ].value;
130 data[hole].key = key1;
131 data[hole].value = data[succ].value;
138 data[hole].key = sup;
144template <
class Key,
class Value>
149 Debug4(cout <<
"insert(" << k <<
", " << v <<
")" << endl);
154 int pred = hole >> 1;
155 Key predKey = dat[pred].key;
156 while (predKey > k) {
157 dat[hole].key = predKey;
158 dat[hole].value = dat[pred].value;
161 predKey = dat[pred].key;
Heap2(Key sup, Key infimum, int cap)
Value getMinValue() const
void insert(Key k, Value v)
void deleteMin(Key *key, Value *value)