Ejemplo n.º 1
0
 def __init__(self):
     self.queue = BinHeap()
Ejemplo n.º 2
0
## Using PriorityQueue ##
#pq = PriorityQueue({1: "a", 2: "b", 3: "c"})
pq = PriorityQueue()
pq.put((2, 'code'))
pq.put((1, 'sleep'))
pq.put((3, 'eat'))
while not pq.empty():
	print(pq.get())

## Using Binary Heap to implement Priority queue ##
p1 = [(2, "code"), (1, "eat"), (3, "sleep")]
heapq.heapify(p1)
p2 = []
heapq.heappush(p2, (1, "code"))
heapq.heappush(p2, (2, "eat"))
print("p1", p1)
while p1:
	print(heapq.heappop(p1))
print("p2", p2)
while p2:
	print(heapq.heappop(p2))

## Using pythonds module ##
p3 = BinHeap()
p3.insert(1)
p3.insert(2)
p3.insert(4)
print("p3", p3)
print(p3.delMin())
Ejemplo n.º 3
0
from pythonds.trees.binheap import BinHeap

bh = BinHeap()
bh.insert(5)
bh.insert(7)
bh.insert(3)
bh.insert(11)

print(bh.delMin())

print(bh.delMin())

print(bh.delMin())

print(bh.delMin())
Ejemplo n.º 4
0
        """
            交换节点
        """
        #首先判断i*2+1是否在超出列表长度
        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):
        """
            删除最小的数据项
        """
        #获取最小项,即根节点
        reval = self.heapList[1]
        self.heapList[1] = self.heapList[self.currentSize]
        self.currentSize -= 1
        # self.heapList.pop()
        self.percDown(1)
        return reval


if __name__ == '__main__':

    alist = BinHeap()
    alist.BuildHeap([5, 9, 11, 14, 18, 19, 21, 33, 17, 27])
    print(alist.delMin())