本文实例为大家分享了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(我)=我最大 如果l0: 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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。