06 b: hashing and priority queues - nus computingcs1102s/slides/slides_06_b...hash table...
TRANSCRIPT
-
HashingPriority Queues
Puzzlers
06 B: Hashing and Priority Queues
CS1102S: Data Structures and Algorithms
Martin Henz
February 26, 2010
Generated on Friday 26th February, 2010, 09:22
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 1
-
HashingPriority Queues
Puzzlers
1 Hashing
2 Priority Queues
3 Puzzlers
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 2
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
1 HashingCollision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
2 Priority Queues
3 Puzzlers
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 3
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Recap: Main Ideas
Implement set as array
Store values in array; compute index using a hash function.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 4
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Recap: Main Ideas
Implement set as array
Store values in array; compute index using a hash function.
Spread
The hash function should “spread” the hash keys evenly overthe available hash values
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 5
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Recap: Main Ideas
Implement set as array
Store values in array; compute index using a hash function.
Spread
The hash function should “spread” the hash keys evenly overthe available hash values
Collision
Hash table implementations differ in their strategies of collisionresolution: Two hash keys mapping to the same hash value
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 6
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Separate Chaining
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 7
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Hash Tables without Linked Lists
Idea
Store items directly into array; use alternative cells if a collisionoccurs
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 8
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Hash Tables without Linked Lists
Idea
Store items directly into array; use alternative cells if a collisionoccurs
More formally
Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 9
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Hash Tables without Linked Lists
Idea
Store items directly into array; use alternative cells if a collisionoccurs
More formally
Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.
How to define hi?
hi(x) = (hash(x) + f (i)) mod TableSize
where f (0) = 0.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 10
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Hash Tables without Linked Lists
Idea
Store items directly into array; use alternative cells if a collisionoccurs
More formally
Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.
How to define hi?
hi(x) = (hash(x) + f (i)) mod TableSize
where f (0) = 0.
Load factor, λ
Ratio of number of elements in hash table to table size.CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 11
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Linear Probing
Conflict resolution
f (i) = i
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 12
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Linear Probing
Conflict resolution
f (i) = i
Clustering
As the load factor λ increases, occupied areas in the array tendto occur in clusters, leading to frequent unsuccessful insertiontries.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 13
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Quadratic Probing
Conflict resolution
f (i) = i2
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 14
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Quadratic Probing
Conflict resolution
f (i) = i2
Theorem
If quadratic probing is used, and the table size is prime, then anew element can always be inserted if the table is at least halfempty.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 15
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Double Hashing
Idea
Use a second hash function to find the jump distance
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 16
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Double Hashing
Idea
Use a second hash function to find the jump distance
Formally
f (i) = i · hash2(x)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 17
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Double Hashing
Idea
Use a second hash function to find the jump distance
Formally
f (i) = i · hash2(x)
Attention
The function hash2 must never return 0. Why?
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 18
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Double Hashing: Example
hash1(x) = x mod 10
hash2(x) = 7 − (x mod 7)
hi(x) = hashi(x) + i · hash2(x)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 19
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
A Detail: Removal from Hash Table
Removal from separate chaining hash table
Straightforward: remove item from respective linked list (if it isthere)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 20
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
A Detail: Removal from Hash Table
Removal from separate chaining hash table
Straightforward: remove item from respective linked list (if it isthere)
Removal from Probing Hash Table: First idea
Set the respective table entry back to null
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 21
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
A Detail: Removal from Hash Table
Removal from separate chaining hash table
Straightforward: remove item from respective linked list (if it isthere)
Removal from Probing Hash Table: First idea
Set the respective table entry back to null
Problem
This operation interrupts probing chains; elements can be “lost”
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 22
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Solution
pr iva te s t a t i c class HashEntry {publ ic AnyType element ;publ ic boolean i s A c t i v e ;publ ic HashEntry ( AnyType e ) {
th i s ( e , t rue ) ; }publ ic HashEntry ( AnyType e , boolean i ) {
element = e ; i s A c t i v e = i ; }}publ ic void remove ( AnyType x ) {
i n t currentPos = f indPos ( x ) ;i f ( i s A c t i v e ( currentPos ) )
a r ray [ currentPos ] . i s A c t i v e = fa lse ;}
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 23
-
HashingPriority Queues
Puzzlers
Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Remember Sets?
Idea
A Set (interface) is a Collection (interface) that does not allowduplicate entries.
HashSet
A HashSet is a hash table implementation of Set.
class HashSet implements Set
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 24
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
1 Hashing
2 Priority QueuesMotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
3 Puzzlers
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 25
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Motivation
Operations on queues
add(e): enter new element into queue
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 26
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Motivation
Operations on queues
add(e): enter new element into queueremove(): remove the element that has been entered first
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 27
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Motivation
Operations on queues
add(e): enter new element into queueremove(): remove the element that has been entered first
A slight variation
Priority should not be implicit, using the time of entry, butexplicit, using an ordering
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 28
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Motivation
Operations on queues
add(e): enter new element into queueremove(): remove the element that has been entered first
A slight variation
Priority should not be implicit, using the time of entry, butexplicit, using an ordering
Operations on priority queues
insert(e): enter new element into queue
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 29
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Motivation
Operations on queues
add(e): enter new element into queueremove(): remove the element that has been entered first
A slight variation
Priority should not be implicit, using the time of entry, butexplicit, using an ordering
Operations on priority queues
insert(e): enter new element into queuedeleteMin(): remove the smallest element
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 30
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Application Examples
Printer queue: use number of pages as “priority”
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 31
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Application Examples
Printer queue: use number of pages as “priority”
Discrete event simulation: use simulation time as “priority”
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 32
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Application Examples
Printer queue: use number of pages as “priority”
Discrete event simulation: use simulation time as “priority”
Network routing: give priority to packets with strictestquality-of-service requirements
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 33
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list:
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 34
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1),
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 35
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 36
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list:
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 37
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list: insert(e): O(N),
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 38
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list: insert(e): O(N), deleteMin(): O(1)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 39
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list: insert(e): O(N), deleteMin(): O(1)
Search tree:
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 40
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list: insert(e): O(N), deleteMin(): O(1)
Search tree: insert(e): O(log N),
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 41
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Simple Implementations
Unordered list: insert(e): O(1), deleteMin(): O(N)
Ordered list: insert(e): O(N), deleteMin(): O(1)
Search tree: insert(e): O(log N), deleteMin(): O(log N)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 42
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Binary Heaps
Rough Idea
Keep a binary tree whose root contains the smallest element
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 43
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Binary Heaps
Rough Idea
Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 44
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Binary Heaps
Rough Idea
Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property
Completeness
Keep binary tree complete, which means completely filled, withthe possible exception of the bottom level, which is filled fromleft to right.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 45
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Binary Heaps
Rough Idea
Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property
Completeness
Keep binary tree complete, which means completely filled, withthe possible exception of the bottom level, which is filled fromleft to right.
Heap-order
For every node X , the key in the parent of X is smaller than orequal to the key in X , with the exception of the root
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 46
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Order in Binary Heap
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 47
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Order in Binary Heap
Tree on the left is a binary heap; tree on the right is not!
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 48
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Representation as Array
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 49
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Representation as Array
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 50
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
insert
Idea
Add “hole” at bottom and “percolate” the hole up to the rightplace for insertion
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 51
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: insert(14)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 52
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: insert(14), continued
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 53
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 54
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
O(log N)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 55
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
O(log N)
Average
2.607 comparisons
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 56
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
deleteMin
Idea
Remove root, leaving “hole” at top. “Percolate” the hole down toa correct place for insertion of bottom element
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 57
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: deleteMin()
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 58
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: deleteMin(), continued
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 59
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: deleteMin(), continued
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 60
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 61
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
O(log N)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 62
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Worst case
O(log N)
Average
log N
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 63
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
buildHeap
Initial setup
Build a heap from a given (unordered) collection of elements
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 64
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
buildHeap
Initial setup
Build a heap from a given (unordered) collection of elements
Idea
“Percolate” every inner node down the tree
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 65
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: buildHeap, percolateDown(7)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 66
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: buildHeap, percolateDown(6), ..(5)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 67
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: buildHeap, percolateDown(4), ..(3)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 68
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Example: buildHeap, percolateDown(2), ..(1)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 69
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Bound
The runtime is bounded by the sum of all heights of all nodes
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 70
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Bound
The runtime is bounded by the sum of all heights of all nodes
Theorem
For perfect binary tree of height h, containing 2h+1 − 1 nodes,sum of heights of nodes is 2h+1 − 1 − (h + 1).
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 71
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Analysis
Bound
The runtime is bounded by the sum of all heights of all nodes
Theorem
For perfect binary tree of height h, containing 2h+1 − 1 nodes,sum of heights of nodes is 2h+1 − 1 − (h + 1).
Worst case
O(N)
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 72
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 73
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 74
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up
increaseKey(p,∆)
Increases the value of item at position p by a positiveamount ∆.
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 75
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up
increaseKey(p,∆)
Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 76
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up
increaseKey(p,∆)
Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down
delete(p)
Remove value at position p
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 77
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Other Heap Operations
decreaseKey(p,∆)
Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up
increaseKey(p,∆)
Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down
delete(p)
Remove value at position pImplementation: decreaseKey(p,∞), then deleteMin()
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 78
-
HashingPriority Queues
Puzzlers
MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
Priority Queues in Standard Library
class Pr ior i tyQueue {boolean add (E e ) { . . . } / / add elementE p o l l ( ) { . . . } / / remove sma l les t
}
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 79
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
1 Hashing
2 Priority Queues
3 PuzzlersLast Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 80
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Last Puzzler: It’s Elementary
What does the following program print?
publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {
System . out . p r i n t l n (12345 + 5432 l ) ;}
}
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 81
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Scary...
I’m so scared when try running these codes onEclipse. When I run the file downloaded fromthe module homepage, the result is 17777.
But when I type it myself , the result is 66666.Maybe the number in teacher’s file is not thenormal number, right ?
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 82
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
The “Fine” Print
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 83
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 84
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 85
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
077: int constant in octal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 86
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
077: int constant in octal notation
45.23: double constant
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 87
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
077: int constant in octal notation
45.23: double constant
5432l: long constant in decimal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 88
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
077: int constant in octal notation
45.23: double constant
5432l: long constant in decimal notation
0xffL: long constant in hexadecimal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 89
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Constant Numbers in Java
(see Java Language Specification)
12345: int constant in decimal notation
0xff: int constant in hexadecimal notation
077: int constant in octal notation
45.23: double constant
5432l: long constant in decimal notation
0xffL: long constant in hexadecimal notation
077L: long constant in octal notation
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 90
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Useful Habit
Use “L” (and not “l”) to indicate long literals:
publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {
System . out . p r i n t l n (12345 + 5432L ) ;}
}
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 91
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
New Puzzler: The Last Laugh
What does the following program print?
publ ic class LastLaugh {publ ic s t a t i c void main ( S t r i n g [ ] args ) {
System . out . p r i n t l n ( ”H” + ” a ” ) ;System . out . p r i n t l n ( ’H ’ + ’ a ’ ) ;
}}
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 92
-
HashingPriority Queues
Puzzlers
Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh
Next Week
Sorting, sorting, and more sorting!
CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 93
HashingCollision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API
Priority QueuesMotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library
PuzzlersLast Puzzler: ``It's Elementary''New Puzzler: The Last Laugh