我有一个算法,创建两个堆,minHeap和maxHeap。两者之间的唯一区别是maxHeap颠倒了minHeap的符号,这是一种简单的黑客方式,将Python的heapq数据结构用作最大堆。下面是我创建的堆代码(堆关键基本上是工人在字典一周的某一天数):奇怪的行为堆积和负数
for day in self.weekDict:
if day != 'Saturday' and len(self.weekDict[day]) != 0: #saturdays and holidays not part of optimization
heapq.heappush(minHeap, (len(self.weekDict[day]), day))
heapq.heappush(maxHeap, (-len(self.weekDict[day]), day))
的minHeap作品一样预期,但最大堆给我奇当存在多于一个相同的密钥时的行为。见下:
[(-8, 'Thursday'), (-7, 'Monday'), (-5, 'Friday'), (-7, 'Wednesday'), (-7, 'Tuesday')]
为什么最近两天出现故障?是否因为只有第一天保证是最低限度的,并且一旦我第一天离开堆会自动调整自己?