Chinaunix首页 | 论坛 | 博客
  • 博客访问: 653805
  • 博文数量: 90
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 2018
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-03 13:09
文章分类

全部博文(90)

文章存档

2010年(7)

2009年(23)

2008年(60)

我的朋友

分类: Python/Ruby

2008-06-18 14:14:46

# -*- coding: Latin-1 -*-

"""Heap queue algorithm (a.k.a. priority queue).

Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for
all k, counting elements from 0. For the sake of comparison,
non-existing elements are considered to be infinite. The interesting
property of a heap is that a[0] is always its smallest element.

Usage:

heap = [] # creates an empty heap
heappush(heap, item) # pushes a new item on the heap
item = heappop(heap) # pops the smallest item from the heap
item = heap[0] # smallest item on the heap without popping it
heapify(x) # transforms list into a heap, in-place, in linear time
item = heapreplace(heap, item) # pops and returns smallest item, and adds
                               # new item; the heap size is unchanged

Our API differs from textbook heap algorithms as follows:

- We use 0-based indexing. This makes the relationship between the
  index for a node and the indexes for its children slightly less
  obvious, but is more suitable since Python uses 0-based indexing.

- Our heappop() method returns the smallest item, not the largest.

These two make it possible to view the heap as a regular Python list
without surprises: heap[0] is the smallest item, and heap.sort()
maintains the heap invariant!
"
""

# Original code by Kevin O'Connor, augmented by Tim Peters and Raymond Hettinger

__about__ = """Heap queues

[explanation by Fran

阅读(1058) | 评论(0) | 转发(0) |
0

上一篇:bitbake parsing

下一篇:bitbake parse的机理分析

给主人留下些什么吧!~~