python-数据结构代码 二叉堆
Posted yangly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-数据结构代码 二叉堆相关的知识,希望对你有一定的参考价值。
class BinHeap: def __init__(self): self.heapList = [0] self.currentSize = 0 def percUp(self,i): while i // 2 > 0: if self.heapList[i] < self.heapList[i // 2]: tmp=self.heapList[i // 2] self.heapList[i // 2] = self.heapList[i] self.heapList[i] = tmp i = i // 2 def insert(self,k): self.heapList.append(k) self.currentSize = self.currentSize + 1 self.percUp(self.currentSize) def percDown(self,i): while(i*2)<=self.currentSize: mc=self.minChild(i) if self.heapList[i] > self.heapList[mc]: tmp=self.heapList[i] self.heapList[i]=self.heapList[mc] self.heapList[mc]=tmp i=mc def minChild(self,i): if i*2+1>self.currentSize: return i*2 else: if self.heapList[i*2]<self.heapList[i*2+1]: return i*2 else: return i*2+1 def delMin(self): retval=self.heapList[1] self.heapList[1]=self.heapList[self.currentSize] self.currentSize=self.currentSize-1 self.heapList.pop() self.percDown(1) return retval def buildHeap(self,alist): i=len(alist)//2 self.currentSize=len(alist) self.heapList=[0]+alist[:] while (i>0): self.percDown(i) i=i-1 bh = BinHeap() bh.buildHeap([9,5,6,2,3]) print(bh.delMin()) print(bh.delMin()) print(bh.delMin()) print(bh.delMin()) print(bh.delMin())
以上是关于python-数据结构代码 二叉堆的主要内容,如果未能解决你的问题,请参考以下文章
Java 数据结构 & 算法宁可累死自己, 也要卷死别人 13 二叉堆