数据结构:优先队列 基于list实现(python版)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构:优先队列 基于list实现(python版)相关的知识,希望对你有一定的参考价值。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 #Author: Minion-Xu
 5 #list实现优先队列
 6 
 7 class ListPriQueueValueError(ValueError):
 8     pass
 9 
10 class List_Pri_Queue(object):
11     def __init__(self, elems = []):
12         self._elems = list(elems)
13         #从大到小排序,末尾值最小,但优先级最高,方便弹出且效率为O(1)
14         self._elems.sort(reverse=True)
15 
16     #判断队列是否为空
17     def is_empty(self):
18         return self._elems is []
19 
20     #查看最高优先级 O(1)
21     def peek(self):
22         if self.is_empty():
23             raise ListPriQueueValueError("in pop")
24         return self._elems[-1]
25 
26     #弹出最高优先级 O(1)
27     def dequeue(self):
28         if self.is_empty():
29             raise ListPriQueueValueError("in pop")
30         return self._elems.pop()
31 
32     #入队新的优先级 O(n)
33     def enqueue(self, e):
34         i = len(self._elems) - 1
35         while i>=0:
36             if self._elems[i] < e:
37                 i -= 1
38             else:
39                 break
40         self._elems.insert(i+1, e)
41 
42 if __name__=="__main__":
43     l = List_Pri_Queue([4,6,1,3,9,7,2,8])
44     print(l._elems)
45     print(l.peek())
46     l.dequeue()
47     print(l._elems)
48     l.enqueue(5)
49     print(l._elems)
50     l.enqueue(1)
51     print(l._elems)

 

以上是关于数据结构:优先队列 基于list实现(python版)的主要内容,如果未能解决你的问题,请参考以下文章

python实现优先队列

python[数据]--队列,堆,优先级队列

基于event 实现的线程安全的优先队列(python实现)

基于condition 实现的线程安全的优先队列(python实现)

LeetCode347:返回频率前K高的元素,基于优先队列实现

networkx图论Breadth First Search广度优先搜索遍历BFS,基于队列,Python