zoukankan      html  css  js  c++  java
  • 数据结构:优先队列 基于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)
  • 相关阅读:
    个人所得税避税的10种方法
    营业税
    融资租赁
    会计等式
    公司公积金
    fixed语句
    自由之路
    $or操作符
    $in 操作符
    Redis 字典的实现
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6129168.html
Copyright © 2011-2022 走看看