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())
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步