如何在python中调用此函数

时间:2015-02-11 04:55:33

标签: python data-structures

当我运行它时,没有任何显示,甚至没有错误消息。所以,我想知道这有什么问题,以及如何正确调用这些函数。(我猜这个函数调用时出错了)

class BinHeap:
    def makeheap(self):
            self.heapList=[0];
            self.currentSize=0;

    def perUp(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.perUp(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("BinHeap")
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())

1 个答案:

答案 0 :(得分:0)

Python非常讲究间距。你搞砸了空格/格式。编辑你的代码,使最后几行在它前面没有空格/标签,你至少应该得到一两个错误。

# This is a subroutine to be executed when called
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       

# these are commands to be executed now
bh = BinHeap()
bh.buildHeap([9,5,6,2,3])
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())
print(bh.delMin())