python实现最大优先队列

  

本文实例为大家分享了python实现最大优先队列的具体代码,供大家参考,具体内容如下

  

<强>说明:为了增强可复用性,设计了两个类,堆类和PriorityQ类,其中PriorityQ类继承堆类,从而达到基于最大堆实现最大优先队列。

        # !/usr/bin/env python   #=utf - 8编码      类堆(对象):   #求给定下标我的父节点下标   def父(自我,我):   如果我% 2==0:   返回我/2 - 1   其他:   返回我/2   #求给定下标我的左孩子下标   def左(自我,我):   返回2 * i + 1   #求给定下标我的右孩子下标   def吧(自我,我):   返回2 *我+ 2   #维护堆的性质:遵循最大的堆   def MaxHeapify(自我,,我,heap_size):   l=self.Left(我)   r=self.Right(我)=我最大   如果l 0:   max=[0]   一个[0]=[heap_size-1]   # heap_size -=1 #该处不对,并没有真正实现数组长度减一   德尔(heap_size-1) # ! ! ! ! ! !   自我。MaxHeapify (0 len (a))   返回马克斯   #将[我]处的关键字增加到钥匙   def HeapIncreaseKey(自我,我,键):   如果key<[我]:   “新打印键小于当前>   BigHeap1:(89年100,98,23日,34岁,5,6,11日0,2,4]   最大值:100   ExtractMax: 100   BigHeap2:(34 98、89、23日,11日,5日,6日4 0 2]   新的密钥比现在小   11(98,89,23日,34岁的5、6、4 0 2]   11(98、89、30日,34岁的5、6、4 0 2]   (89年100、98、30日,11日,5日,6日4 0,2,34)      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

python实现最大优先队列