Insert: percolate up Heap – Insert(val) - University of Washington
Heap ? Insert(val)
Basic Idea: 1. Put val at "next" leaf position 2. Repeatedly exchange node with its parent
if needed
10/6/2006
1
Insert: percolate up
10
20
80
40
60
85 99
50 700 65 15
10
15
40
20
50 700 65 60
10/6/2006
80
85
99
2
Insert pseudo/C++ Code
(optimized)
void insert(Object o) { assert(!isFull()); size++; newPos = percolateUp(size,o); Heap[newPos] = o;
}
int percolateUp(int hole, Object val) {
while (hole > 1 && val < Heap[hole/2])
Heap[hole] = Heap[hole/2]; hole /= 2; } return hole; }
runtime:
10/6/2006
(Java code in book)
3
Heap ? Deletemin
Basic Idea: 1. Remove root (that is always the min!) 2. Put "last" leaf node at root 3. Find smallest child of node 4. Swap node with its smallest child if needed. 5. Repeat steps 3 & 4 until no swaps needed.
10/6/2006
4
DeleteMin: percolate down
10
20
15
40
60
85 99
50 700 65
15
20
65
40
60
85 99
50 700
10/6/2006
5
DeleteMin pseudo/C++ Code
(Optimized)
Object deleteMin() { assert(!isEmpty()); returnVal = Heap[1]; size--; newPos = percolateDown(1, Heap[size+1]); Heap[newPos] =
int percolateDown(int hole, Object val) {
while (2*hole 0; i-- ) percolateDown( i );
}
runtime:
10/6/2006
11
BuildHeap: Floyd's Method
12
12
5
11
5
11
3
10
2
9
3
1
2
9
48176 12
4 8 10 7 6 12
5
2
1
2
3
1
6
10/6/2006
4 8 10 7 11
93
5
6
9
12
4 8 10 7 11
2
Finally...
1
3
2
4
5
6
9
12 8 10 7 11
runtime:
10/6/2006
13
Facts about Heaps
Observations:
? finding a child/parent index is a multiply/divide by two ? operations jump widely through the heap ? each percolate step looks at only two new nodes ? inserts are at least as common as deleteMins
Realities:
? division/multiplication by powers of two are equally fast
? looking at only two new pieces of data: bad for cache!
? with huge data sets, disk accesses dominate
10/6/2006
14
10/6/2006
Cycles to access: CPU Cache Memory
Disk
15
3
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- building java programs university of washington
- binarysearch int a int key method example
- using recursion to convert number to other number bases
- lab a translating data to binary york university
- identifying java calls in native code via binary scanning
- binarysearch double a int fromindex int toindex
- the binaryreader and binarywriter java transformations
- binarysearch char a int fromindex int toindex
- networking with java university of arizona
- insert percolate up heap insert val university of washington
Related searches
- university of washington hr jobs
- university of washington jobs listing
- university of washington human resources
- university of washington human resources dept
- university of washington baseball roster
- university of washington product management
- university of washington online mba
- university of washington printable map
- university of washington opioid taper
- university of washington opioid calculator
- university of washington program management
- university of washington graduate programs