McGraw Hill Introduction To Algorithms (2nd Ed) >>
HEAPSORT (112 - 127) 15 pages
6 1 1,2,3,4,5,6,7
6 2 1,2,3,4,5
6 3 1,2,3
6 4 1,2,3,4 >>
Running time is O(n lg n).
HEAP is a binary tree.
PARENT(i) = i/2
RIGHT (i) = 2i + 1
LEFT (i) = 2i
Max-Heap & Min-Heap types
Height = Q(lg n) = longest downward path to leaf
HeapSize = Number Of Nodes in the Tree
MAX-HEAPIFY(A, i)
1 l <-- LEFT(i)
2 r <-- RIGHT(i)
3 if l <= heap-size[A] and A[l] > A[i]
4 then largest <-- l
5 else largest <-- i
6 if r <= heap-size[A] and A[r] > A[largest]
7 then largest <-- r
8 if largest != i
9 then exchange A[i] - A[largest]
10 MAX-HEAPIFY(A, largest)
BUILD-MAX-HEAP(A)
1 heap-size[A] <-- length[A]
2 for i <-- |length[A]/2| downto 1
3 do MAX-HEAPIFY(A, i)
Building a Max-Heap is Linear Time = O(n)
HEAPSORT(A)
1 BUILD-MAX-HEAP(A)
2 for i <-- length[A] downto 2
3 do exchange A[1] - A[i]
4 heap-size[A] <-- heap-size[A] - 1
5 MAX-HEAPIFY(A, 1)
HEAP-MAXIMUM(A)
1 return A[1]
HEAP-EXTRACT-MAX(A)
1 if heap-size[A] < 1
2 then error "heap underflow"
3 max <-- A[1]
4 A[1] <-- A[heap-size[A]]
5 heap-size[A] <-- heap-size[A] - 1
6 MAX-HEAPIFY(A, 1)
7 return max
HEAP-INCREASE-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]] <-- -oo
3 HEAP-INCREASE-KEY(A, heap-size[A], key)
|
SORTING IN LINEAR TIME (145 - 160) 15 pages
8 1 1,2,3,4*
8 3 1,2,3,4,5*
8 4 1,2
8 Pro 2,4,6 >>
HASH TABLES (192 - 219) 27 pages
11 1 1,2,3
11 2 1,2,3,4*
11 3 1,2,3,4
11 4 1,2,3,4 >>
BINARY SEARCH TREES (220 - 238) 18 pages
12 1 1,2,3,4,5
12 2 1,2,3,4,5,6,7,8,9
12 3 1,2,3,4,6 >>
RED-BLACK TREES (238 - 261) 23 pages
13 1 1,2,6
13 2 1,2,3
13 3 1,2, 3, 6
13 4 1, 2, 3, 4, 6, 7 >>
B-TREES (371 - 388) 17 pages
18 1 1, 2, 3, 4, 5
18 2 1, 3, 5, 6 >>
BINOMIAL HEAPS (388 - 405) 17 pages
19 1 1, 2
19 2 1, 2, 3, 5, 7 >>
SORTING NETWORKS (614 - 632) 18 pages >>
MATRIX OPERATIONS (632 - 673) 41 pages >>
Show All