Priority Queue is an extension of the queue with following properties.
1) An element with high priority is dequeued before an element with low priority.
2) If two elements have the same priority, they are served according to their order in the queue.
Below is simple implementation of priority queue.
# A simple implementation of Priority Queue # using Queue. class PriorityQueue(object): def __init__(self): self.queue = [] def __str__(self): return ' '.join([str(i) for i in self.queue]) # for checking if the queue is empty def isEmpty(self): return len(self.queue) == [] # for inserting an element in the queue def insert(self, data): self.queue.append(data) # for popping an element based on Priority def delete(self): try: max = 0 for i in range(len(self.queue)): if self.queue[i] > self.queue[max]: max = i item = self.queue[max] del self.queue[max] return item except IndexError: print() exit() if __name__ == '__main__': myQueue = PriorityQueue() myQueue.insert(12) myQueue.insert(1) myQueue.insert(14) myQueue.insert(7) print(myQueue) while not myQueue.isEmpty(): print(myQueue.delete()) |
12 1 14 7 14 12 7 1 ()
Note that the time complexity of delete is O(n) in above code.
A better implementation is to use Binary Heap which is typically used to implement priority queue. Note that Python provides heapq in library also.
Recommended Posts:
- Applications of Priority Queue
- Priority Queue | Set 1 (Introduction)
- Double ended priority queue
- Implementation of Priority Queue in Javascript
- Priority queue of pairs in C++ (Ordered by first)
- Priority Queue using Linked List
- Why is Binary Heap Preferred over BST for Priority Queue?
- Priority Queue using doubly linked list
- Priority Queue in C++ Standard Template Library (STL)
- How to implement stack using priority queue or heap?
- Stack and Queue in Python using queue Module
- Heap queue (or heapq) in Python
- Check if a queue can be sorted into another queue using a stack
- Program for Preemptive Priority CPU Scheduling
- Scheduling priority tasks in limited time and minimizing loss
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



