当前位置: 首页 > 网络应用技术

Python模块的HAPQ模块

时间:2023-03-08 12:56:22 网络应用技术

  堆是一个非线树形的数据结构,具有两个堆,最大堆和最小的堆。最小的元素。

  最大堆:树中父节点的值总是大于任意节点的值

  最小堆:树中父节点的值始终大于任何子公司节点的值

  我们通常使用二元桩来获得优先队列。其内部调整算法复杂性是logn

  heappush(堆,项目):将项目按入HEQP。

  结果:

  HEAPPOP(堆):最小值从堆项目中弹出。

  结果:

  结果:

  注意:如果没有将其压碎到堆中,而是通过HEAPQ添加一个值,则堆的功能无法操作元素,或者该元素对Heap.LET的看法很难看。

  结果:

  可以发现-1不被-1所感知,否则弹出的最小元素应为-1而不是1

  HAEPQ.HEAPIFY(列表):必须列出参数。此功能必须将列表变成堆并实时运行。

  结果:

  处理后,List1已成为堆(最小元素1首先排名)

  heappushpop(堆,项目):Heappush方法和Heappop方法的组合,首先是Heatpush(Heap,Item),然后是Heappop(Heap)

  首先是Heatpush

  结果:

  再次出现

  结果:

  结果:

  堆(堆,项目):头部和heappush方法的拟合方法,第一个heappop(heap),然后heappush(heap,item)

  注意此方法和HeapPushpop方法之间的区别

  第一个船宝

  结果:

  再次出现

  结果:

  结果:

  合并(*迭代):合并多个堆

  结果:

  可以看出,此方法将返回可以使用迭代或列表()方法获取其内容的生成器

  结果:

  HAEPQ.NLARGOGE(n,iToble):获得最大的N值

  结果:

  这是List1的两个最大数量

  HAEPQ.NSMALLEST(n,它可以):获取iterabile中最大的n个值

  结果:

  这是nlarem方法和nsmallest方法的最小列表1。当发现要找到的元素的数量相对较小时,函数nlargest()和nsmallest()非常合适。如果您只想找到唯一的最小值或最大值或最大(n = 1)元素,则是min()和max()函数将更快。类似,如果N的大小接近收集大小,通常会先对此集进行排序,然后更快地使用切片操作(sorted(items)[:n] [:n]或排序(项目)[-n:])。有必要在正确的场合使用函数nlarges()和nsmallest()来发挥其优势(如果n接近收集大小,则使用排序操作会更好)。