博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构:优先队列 基于list实现(python版)
阅读量:5044 次
发布时间:2019-06-12

本文共 1291 字,大约阅读时间需要 4 分钟。

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) - 135         while i>=0:36             if self._elems[i] < e:37                 i -= 138             else:39                 break40         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)

 

转载于:https://www.cnblogs.com/xautxuqiang/p/6129168.html

你可能感兴趣的文章
Sam做题记录
查看>>
C++的引用
查看>>
python itertools
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
文件操作
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
graphite custom functions
查看>>
ssh无密码登陆屌丝指南
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
oracle连接的三个配置文件(转)
查看>>
Java 8 中如何优雅的处理集合
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Centos下源码安装git
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
Extjs String转Json
查看>>
二叉树的遍历问题总结
查看>>