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())
  • 相关阅读:
    数据库自动备份(转)
    sqlserver常用全局变量
    Remoting通讯实例
    自定义ORM框架(转转)
    带格式导出数据到Excel
    app.config动态修改及读取
    学习笔记之AJAX无刷新分页
    游标(转转)
    Sql Server索引(转载)
    流Stream个人学习理解
  • 原文地址:https://www.cnblogs.com/lely/p/10167235.html
Copyright © 2011-2022 走看看