170 likes | 281 Views
Priority Queues. What is a Priority Queue?. Container of elements where each element has an associated key A key is an attribute that can identify rank or weight of an element Examples – passenger, todo list. Priority Queue ADT Operations. size() isEmpty()
E N D
What is a Priority Queue? • Container of elements where each element has an associated key • A key is an attribute that can identify rank or weight of an element • Examples – passenger, todo list
Priority Queue ADT Operations • size() • isEmpty() • insertItem(k, e) – insert element e with key k • minElement() – return ref to min element • minKey() – return const ref to smallest key • removeMin() – remove and return element with smallest key
insertItem(5, A) insertItem(9, C) insertItem(3, B) insertItem(7, D) minElement() minKey() removeMin() size() minElement() removeMin() removeMin() removeMin() removeMin() isEmpty() Example
The Comparator Pattern • Suppose we want a priority queue of “Appointment” objects • How do we determine that one appointment is before another? • Need to compare Appointment objects • operator overloading versus standard function
Implementation • Using an array? • Using a linked list? • Running time of insertItem/removeMin?
Sorting • Can you sort a list of numbers using a priority queue? • Algorithm?
Heaps • A heap is a priority queue implemented with a binary tree • Heap-Order Property: In a heap T, for every node v other than the root, the key stored at v is greater than or equal to the key stored at v’s parent • Complete Binary Tree Property: A heap
Heaps • Heap-Order Property: In a heap T, for every node v other than the root, the key stored at v is greater than or equal to the key stored at v’s parent
Heaps • Complete Binary Tree Property: A heap T with height h is a complete binary tree, that is, levels 0,1,2,…,h-1of T have the maximum number of nodes possible and all the internal nodes are to the left of the external nodes in level h-1. • What does this give us?
Example Heap root 4 9 7 56 10 15 11
Heap Implementation • Insertion algorithm new_node 5 root 4 9 7 56 10 15 11
Up-Heap Bubbling while new node is smaller than its parent swap parent and node • Running time?
Heap Implementation • Deletion algorithm delete 4 root 4 9 5 56 10 7 11 15
Down-Heap Bubbling if right child is null if left child is smaller than current swap left and current if both children not null swap current with smallest child
Vector Implementation • Children are positions index*2 and index*2+1 • Implementation of insert and remove? 0 1 2 3 4 5 6 7
Heap Sort • Algorithm to use a heap to sort a list of numbers • Running time?