Lecture 1:a. Correctnes b. Applets c. Tables Lecture 2 a.Applets b.Tables c.Exercises Lecture 3Lecture 4a.Appletsb. ProblemsLecture 5 Lecture 6 Lecture 7 Lecture 8 Test 1 Test 2
|
exercise 6.5-3
6.5-3 Write pseudocode for the procedures HEAP-MINIMUM, HEAP-EXTRACT-MIN, HEAPDECREASE-
KEY, and MIN-HEAP-INSERT that implement a min-priority queue with a
min-heap.
HEAP-MINIMUM(A) |
1
|
|
return A[1] |
|
|
|
HEAP-EXTRACT-MIN(A) |
| 1 |
|
if heap-size[A] < 1 |
| 2 |
|
then error "heap underflow" |
| 3 |
|
min ← A[1] |
| 4 |
|
A[1] ← A[heap-size[A]] |
| 5 |
|
heap-size[A] ← heap-size[A] - 1 |
| 6 |
|
MIN-HEAPIFY(A, 1) |
| 7 |
|
return min |
| |
|
|
HEAP-DECREASE-KEY(A, i, key) |
| 1 |
|
if key > A[i] |
| 2 |
|
then error "new key is smaller than current key" |
| 3 |
|
A[i] ← key |
| 4 |
|
while i > 1 and A[PARENT(i)] > A[i] |
| 5 |
|
do exchange A[i] ↔ A[PARENT(i)] |
| 6 |
|
i ← PARENT(i) |
| |
|
|
MAX-HEAP-INSERT(A, key) |
1 |
|
heap-size[A] ← heap-size[A] + 1 |
2 |
|
A[heap-size[A]] ← ∞ |
3 |
|
HEAP-DECREASE-KEY(A, heap-size[A], key) |
Para realizar el codigo de del Heap-Decrease-Key lo que se hace es intercambiar la compracion entre key y A[i], tambien lo hacemos con A[PARENT(j)] y A[j], en el Max-Heap-Insert modificamos el - ∞ por ∞. |