<p>我有一个算法可以创建两个堆,minHeap和maxHeap。两者之间唯一的区别是maxHeap颠倒了minHeap的符号,这是一种将Python的heapq数据结构用作max heap的简单方法。下面是我创建堆的代码(heap键基本上是字典中给定一周中某一天的工人数):</p>
<pre><code>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))
</code></pre>
<p>minHeap的工作与预期一样,但是当有多个相同的键时,max heap给出了奇怪的行为。见下文:</p>
^{pr2}$
<p>为什么最近两天不正常?是不是因为只有第一天被保证是最小值,而且一旦我把第一天从堆里弹出,它就会自动调整自己?在</p>