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())
  • 相关阅读:
    TinyOS在ubuntu 14.04下安装教程
    C++ STL标准入门
    C++ 模板
    多态
    C++继承
    C++类型转换 -- 由其他类型转换到自定义类型
    运算符重载
    友元
    typedef用法
    c++细节--section1
  • 原文地址:https://www.cnblogs.com/lely/p/10167235.html
Copyright © 2011-2022 走看看