数组存储数据 ,数组0元素位置设置哨兵,为sys.maxsize最大整数。
python3的整数除法为 //
>>> 5//2
2
import sys
class MaxHeap:
def __init__(self, size):
self._size = size
self._max_heap = [sys.maxsize]
def isFull(self):
""""""
return self._size + 1 == len(self._max_heap) #0的位置不存储
def insert(self, item):
""""""
if self.isFull():
print("最大堆满了")
return
self._max_heap.append(item)
i = len(self._max_heap) - 1
while (self._max_heap[i//2] < item):
self._max_heap[i] = self._max_heap[i // 2]
i = i // 2
self._max_heap[i] = item
def isEmpty(self, max_heap):
return len(self._max_heap) == 1
def deleteElement(self):
if self.isEmpty():
print("最大堆是空的")
maxItem = self._max_heap[1]
temp = self._max_heap[len(self._max_heap) - 1]
parent = 1
while(parent*2 <= len(self._max_heap)-1):
child = parent*2
if child!= len(self._max_heap)-1 & self._max_heap[child] < self._max_heap[child+1]:
child += 1
if temp > self._max_heap[child]:
break
else:
self._max_heap[parent] = self._max_heap[child]
parent = child
return maxItem
if __name__ == '__main__':
max_heap = MaxHeap(4)
max_heap.insert(222)
max_heap.insert(32)
max_heap.insert(3)
max_heap.insert(6)
print(max_heap._max_heap)