zoukankan      html  css  js  c++  java
  • 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())
  • 相关阅读:
    软件体系风格选择小结
    bert入门资料
    RNN入门和seq2seq
    推荐系统论文源码笔记——依次学习之DKN源码笔记
    Mac os下gcc编译错误解决方案
    ns3 安装方法
    angular http ajax header
    javascript 实现htmlEncode htmlDecode
    windows下的python扩展包下载地址
    php版DES
  • 原文地址:https://www.cnblogs.com/lely/p/10167235.html
Copyright © 2011-2022 走看看