数据结构:优先队列 基于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版)的主要内容,如果未能解决你的问题,请参考以下文章
基于event 实现的线程安全的优先队列(python实现)
基于condition 实现的线程安全的优先队列(python实现)