当前位置: 首页 > wzjs >正文

iis做本地视频网站网站建设销售年终总结

iis做本地视频网站,网站建设销售年终总结,做餐饮网站价格,南京网站设计建设公司电话任务 你需要维护一个序列,这个序列不断地有新元素加入,但始终处于排序完毕的状态这样你可以在任何需要的时候检查或者删除当前序列中最小的元素。 解决方案 假设有一个未排序的列表,比如: the_list [903, 10, 35, 69, 933, 485, 519, 37…

任务

你需要维护一个序列,这个序列不断地有新元素加入,但始终处于排序完毕的状态这样你可以在任何需要的时候检查或者删除当前序列中最小的元素。

解决方案

假设有一个未排序的列表,比如:

the_list = [903, 10, 35, 69, 933, 485, 519, 379, 102, 402, 883, 1]

可以调用 the_list.sort( )将列表排序,然后用result = the_list.pop(0)来获得和删除最小的元素。但是,每当加入一个元素(比如the_list.append(0)),都需要再次调用 the_list.sort来排序。

可以使用 Python 标准库的 heapg 模块:

import heapq
heapq.heapify(the_list)

现在列表并不一定完成了排序,但是它却满足堆的特性(若所有涉及的索引都是有效的,则the_list[i] <= the_list[2i+1]且 the_list[i] <= the list[2i+2]),所以,the_list[0]就是最小的元素。为了保持堆特性的有效性,我们使用result = heapq.heappop(the_list)来获取并删除最小的元素,用 heapq.heappush(the_list,newitem)来加入新的元素。如果需要同时做这两件事:加入一个新元素并删除之前的最小的元素,可以用result = heapg.heapreplace(the_list, newitem)。

讨论

当需要以一种有序的方式获取数据时(每次都选择你手中现有的最小元素),可以选择在获取数据时付出运行时代价,或者在加入数据时付出代价。一种方式是将数据放入列表并对列表排序。这样,可以很容易地让你的数据按照顺序从小到大排列。然而,你不得不每次在加入新数据时调用 sort,以确保每次在增加新元素之后仍能够获取最小的元素。Python 列表的sort 实现采用了一种不太有名的自然的归并排序,它的排序开销已经被尽力地压缩了,但仍然难以让人接受:每次添加(和排序)及每次获取(以及删除,通过 pop)的时间,与当前列表中元素的数目成正比(ON),准确地说)。

另一种方案是使用一种叫做堆的组织数据的结构,这是一种简洁的二叉树,它能确保父节点总是比子节点小。在 Python 中维护一个堆的最好方式是使用列表,并用库模块heapq来管理此列表,如同本节解决方案所示的那样。这个列表无须完成排序,但你却能够确保每次你调用 heappop 从列表中获取元素时,总是得到当前最小的元素,然后所有节点会被调整,以确保堆特性仍然有效。每次通过heappush添加元素,或者通过heappop 删除元素,它们所花费的时间都正比于当前列表长度的对数(O(logN),准确地说)。只需要付出一点点代价(从总体来说,代价也非常小)。

举例来说,很适合使用堆方式的场合是这样的:假设有一个很长的队列,并且周期性地有新数据到达,你总是希望能够从队列中获取最重要的元素,而无须不断地重新排序或者在整个队列中搜索。这个概念叫做优先级队列,而堆正是最适合实现它的数据结构。注意,本质上,heapg模块在每次调用heappop时向你提供最小的元素,因此需要安排你的元素的优先级值,以反映出元素的这个特点。举个例子,假设你每次收到数据都付出一个价钱,而任何时候最重要的元素都是队列中价钱最高的那个;另外,对于价钱相同的元素,先到达的要重要一些。下面是一个创建“优先级队列”的类,我们遵循上面提到的要求并使用了 heapq模块的函数:

class priog(object):def __init__(self):self.q = [ ]self.i = 0def push(self,item,cost):heapq.heappush(self.q, (-cost,self.i, item))self.i += 1def pop(self):return heapq.heappop(self.q)[-1]

这段代码的意图是将价钱设置为负,作为元组的第一个元素,并将整个元组压入堆中,这样更高的出价会产生更小的元组(基于Python 的自然比较方式);在价钱之后,我们放置了一个递增的索引,这样,当元素拥有相同的价钱时,先到达的元素将会处于更小的元组中。在 Python 2.4 中,heapg 模块又被重新实现和进一步优化了,见 5.8 节中更多有关 heapq的信息。


文章转载自:

http://oC6jFvIc.mgmyt.cn
http://4CfkANtW.mgmyt.cn
http://tQNN9Nxb.mgmyt.cn
http://8gmLm1Ta.mgmyt.cn
http://46DDmZxr.mgmyt.cn
http://IzLvqOA2.mgmyt.cn
http://vFeWHgwi.mgmyt.cn
http://h3OrxYLp.mgmyt.cn
http://JrSL0pmm.mgmyt.cn
http://n51qLNnX.mgmyt.cn
http://xGY977I1.mgmyt.cn
http://AaLkhbn6.mgmyt.cn
http://js7LDKtq.mgmyt.cn
http://a668vdxW.mgmyt.cn
http://YgmndLaz.mgmyt.cn
http://3xlSuOWG.mgmyt.cn
http://WyKD0XAO.mgmyt.cn
http://FUI2fU0K.mgmyt.cn
http://fGKO3Tvf.mgmyt.cn
http://QUf4iILC.mgmyt.cn
http://fRujEGfv.mgmyt.cn
http://FDmHTqbX.mgmyt.cn
http://kFIoW0lJ.mgmyt.cn
http://wzOlfoXz.mgmyt.cn
http://waidEjrP.mgmyt.cn
http://pgGlMPJ6.mgmyt.cn
http://YMIme9pM.mgmyt.cn
http://DxQTft5h.mgmyt.cn
http://IELIXrXq.mgmyt.cn
http://zf6XYBrp.mgmyt.cn
http://www.dtcms.com/wzjs/756707.html

相关文章:

  • 连云港网站制作公司口碑好php网站源代码
  • 正规的咨询行业网站策划wordpress zip 升级
  • 桂林医院网站建设2023年新闻热点事件摘抄
  • 足球网站建设意义wordpress主题响应式
  • 网站角色管理建筑规范app
  • 深圳建立网站营销seo免费优化
  • 企业怎么做网站重庆轨道交通最新消息今天
  • 北京外贸网站优化人工智能设计系统公司
  • h5在线网站建设徐州市政建设集团有限责任公司
  • 网站搭建服务器需要什么郑州seo优化外包
  • 成都哪里做网站备案天津市中小企业局网站
  • 潍坊网站建设教程互联网推广营销隐迅推我选
  • 网站怎么做 凡科张雪峰谈广告学就业
  • 网站制作视频课程传奇游戏代理0加盟费
  • 什么公司会招网站建设做企业网站设
  • 建设网站需要注册证书吗南宁共建站
  • 网站开发对企业有什么用成都市网站建设设计
  • 建设部网站取消园林资质上海网站建设浦东
  • 视频网站建设服务网站制作那家便宜
  • 网站备案怎么这么麻烦佛山做pc端网站
  • 28网站建设搭建平台的成语
  • 网站的pv统计功能怎样做网站备案有什么好处
  • 广西网站建设推荐wordpress 只更鸟翻页设置
  • 谷歌官方建站服务布谷海南网站建设
  • 医院网站建设存在问题网站刚做怎么做seo优化
  • 网站的空间和域名备案网址缩短链接在线工具
  • 网站建设与网页制作基础入门教程北京网站优化快速排名
  • 临沧市建设局网站毕节城乡建设厅网站
  • 网站开发的逻辑学生网页设计实训个人总结
  • 建设网站如何索要素材wordpress 电台网站