用php实现一个堆

  堆(heap)是一个很有用的数据结构。堆可以用于实现优先队列。比如一个任务队列,其中中有很多任务,而且不断有新的加进来。要求每次找到其中优先
级最高的那个来处理。如果每添加一个就要排序一次的话开销是很大的,时间复杂度为O(nlogn),但实际上我们要的只是其中最大的那个,因此完全没有必
要全部排序。堆这种数据结构保证了堆顶的元素始终是最大的。而且每添加一个新元素,或者弹出堆顶元素的时间复杂度仅为O(logn)。即使是有40亿个元
素,也最多需要交换32次。排序树(比如二叉搜索树)插入删除的复杂度虽然也是O(logn),但堆算法更简单,常系数也更小。同时,堆可以放在一个扁平
的数组中,不用额外的指针来维护结构,所使用的空间也更少。

[下载代码]

5 thoughts on “用php实现一个堆

  1. Scarecrow July 28, 2009 / 8:00 pm

    我是文科生,我想问的是,这个堆在PHP中应用在哪里?我是说在WEB上,举个典型例子。

  2. pp January 29, 2007 / 4:30 pm

    向来以为所谓的堆就是一个冒泡排序的扩充~

  3. 虎虎 January 28, 2007 / 11:21 am

    我下载了。有没有汉语的 Document ?

  4. shooven January 27, 2007 / 1:07 am

    看了就回帖,不然太对不起博主了^^

  5. yangjunshuang January 26, 2007 / 10:59 pm

    Cobol有什么好的,人生的第一个offer被我拒了,呵呵。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s