PowerPoint Presentation - University Of Illinois...std data structures...
Transcript of PowerPoint Presentation - University Of Illinois...std data structures...
CS 225Data Structures
October 29 – Hashing AnalysisWade Fagen-Ulmschneider
Running Times
Linear Probing:• Successful: ½(1 + 1/(1-α))• Unsuccessful: ½(1 + 1/(1-α))2
Double Hashing:• Successful: 1/α * ln(1/(1-α))• Unsuccessful: 1/(1-α)
The expected number of probes for find(key) under SUHA
ReHashingWhat if the array fills?
Which collision resolution strategy is better?• Big Records:
• Structure Speed:
What structure do hash tables replace?
What constraint exists on hashing that doesn’t exist with BSTs?
Why talk about BSTs at all?
Running Times
Hash Table AVL Linked List
Find
SUHA:
Worst Case:
Insert
SUHA:
Worst Case:
Storage Space
std data structures
std::map
std data structures
std::map::operator[]::insert::erase
::lower_bound(key) Iterator to first element ≤ key::upper_bound(key) Iterator to first element > key
std data structures
std::unordered_map::operator[]::insert::erase
::lower_bound(key) Iterator to first element ≤ key::upper_bound(key) Iterator to first element > key
std data structures
std::unordered_map::operator[]::insert::erase
::lower_bound(key) Iterator to first element ≤ key::upper_bound(key) Iterator to first element > key
::load_factor()::max_load_factor(ml) Sets the max load factor
Mattox Monday
CS 225 Final Exam
Exam Details:CBTF Exam, 3 Hours LongFormat: 1 Theory Exam + 1 Programming Exam
When you finish your exam, you’re done with CS 225! :)
Signup Process:CS 225 Exam will run Thursday, Dec. 13 - Tuesday, Dec. 18
(including both Saturday and Sunday)
You can sign up for your slot right now!
Secret, Mystery Data Structure
ADT:insertremoveisEmpty
Priority Queue Implementationinsert removeMin
O(n) O(n)
O(1) O(n)
O( lg(n) ) O(1)
O( lg(n) ) O(1)
unsorted
sorted
Another possibly structure…
5
15 9
25
4
6
7 20
1116 1214
(min)Heap
5
15 9
25
4
6
7 20
1116 1214
A complete binary tree T is a min-heap if:• T = {} or• T = {r, TL, TR}, where r is
less than the roots of {TL, TR} and {TL, TR} are min-heaps.
(min)Heap
5
15 9
25
4
6
7 20
1116 1214
4 5 6 15 9 7 20 16 25 14 12 11
insert
5
15 9
25
4
6
7 20
1116 1214
4 5 6 15 9 7 20 16 25 14 12 11
template <class T>
void Heap<T>::_insert(const T & key) {
// Check to ensure there’s space to insert an element
// ...if not, grow the array
if ( size_ == capacity_ ) { _growArray(); }
// Insert the new element at the end of the array
item_[++size] = key;
// Restore the heap property
_heapifyUp(size);
}
12
3
4
5
6
7
8
9
10
11
12
insert
5
15 9
25
4
6
7 20
1116 1214
4 5 6 15 9 7 20 16 25 14 12 11
growArray
5
15 9
25
4
6
7 20
1116 1214
template <class T>
void Heap<T>::_heapifyUp( _________________ ) {
if ( index > _________ ) {
if ( item_[index] < item_[ parent(index) ] ) {
std::swap( item_[index], item_[ parent(index) ] );
_heapifyUp( ________________ );
}
}
}
12
3
4
5
6
7
8
9
insert - heapifyUptemplate <class T>
void Heap<T>::_insert(const T & key) {
// Check to ensure there’s space to insert an element
// ...if not, grow the array
if ( size_ == capacity_ ) { _growArray(); }
// Insert the new element at the end of the array
item_[++size] = key;
// Restore the heap property
_heapifyUp(size);
}
12
3
4
5
6
7
8
9
10
11
12
removeMin
5
15 9
25
4
6
7 20
1116 1214
4 5 6 15 9 7 20 16 25 14 12 11
template <class T>
void Heap<T>::_removeMin() {
// Swap with the last value
T minValue = item_[1];
item_[1] = item_[size_];
size--;
// Restore the heap property
heapifyDown();
// Return the minimum value
return minValue;
}
12
3
4
5
6
7
8
9
10
11
12
13
removeMin
5
15 9
25
4
6
7 20
1116 1214
4 5 6 15 9 7 20 16 25 14 12 11
template <class T>
void Heap<T>::_removeMin() {
// Swap with the last value
T minValue = item_[1];
item_[1] = item_[size_];
size--;
// Restore the heap property
_heapifyDown();
// Return the minimum value
return minValue;
}template <class T>
void Heap<T>::_heapifyDown(int index) {
if ( !_isLeaf(index) ) {
T minChildIndex = _minChild(index);
if ( item_[index] ___ item_[minChildIndex] ) {
std::swap( item_[index], item_[minChildIndex] );
_heapifyDown( ________________ );
}
}
}
12
3
4
5
6
7
8
9
10
removeMin - heapifyDown12
3
4
5
6
7
8
9
10
11
12
13
Array Abstractions