0
例如,隨機數的列表:python如何在堆中排序值?
>>> x = [1,24,5,1,5,1,23,6]
>>> heapq.heapify(x)
[1, 1, 1, 6, 5, 5, 23, 24]
爲什麼它任意做6,5,5而不是5,5,6或5,6,5-?
例如,隨機數的列表:python如何在堆中排序值?
>>> x = [1,24,5,1,5,1,23,6]
>>> heapq.heapify(x)
[1, 1, 1, 6, 5, 5, 23, 24]
爲什麼它任意做6,5,5而不是5,5,6或5,6,5-?
Python文檔包含的heapq
如下描述:
堆是二叉樹針對每個父節點具有小於或等於它的任何的兒童的值。此實現使用所有
k
爲其中的heap[k] <= heap[2*k+1]
和heap[k] <= heap[2*k+2]
的數組,計數從零開始的元素。爲了比較,不存在的元素被認爲是無限的。堆的有趣屬性是它的最小元素始終是根,heap[0]
。
您可以使用示例數據驗證這一點:
>>> for i in xrange(len(x)):
... print '{0} <= {1}'.format(x[i], x[i*2+1:i*2+3])
...
1 <= [1, 1]
1 <= [6, 5]
1 <= [5, 23]
6 <= [24]
5 <= []
5 <= []
23 <= []
24 <= []
有關二叉堆可以檢查Wikipedia更多的信息。