14、编程珠玑笔记十四堆

来源:互联网 发布:巨炮舰队扫矿软件 编辑:程序博客网 时间:2024/05/29 07:44

14、编程珠玑笔记十四堆

         本篇名言:“让珊瑚远离惊涛骇浪的侵蚀吗?那无疑是将它们的美丽葬送.

        欢迎转载,转载请标明出处: http://blog.csdn.net/notbaron/article/details/48420371

        使用堆主要用于解决两个问题:排序和优先级队列。

         堆是用来表示元素集合的一种数据结构。实际上对中的元素可以是任何有序类型。

         作者介绍了二叉树,然后介绍了往二叉树进行插入数值破换二叉树特性后的进行调整的两个函数。分别叫做siftup和siftdown。作则其的名字很高记,因为根的数据是最小的,如果小数放在节点上,就必须使用siftup 将该数浮上来,同理大树必须是在叶子节点上,如果再根上,那就需要调用siftdown来沉下来。

1.      优先级队列

数据结构从两方面看,从外部来看说明它做什么,从内部看来说明它可以做什么。

优先级队列操作一个初始化为空的元素集合,往集合中插入一个新元素,也可删除集合中最小的元素。可以通过数组、链表之类的顺序结构来实现优先级队列。

对比算法运行时间如下:

图1


堆使用需要额外的内存。

 

2.  一种排序

该排序方法中,仅适用了一个数组。第一阶段构建堆,然后用对来建立有序序列,虽然堆排序保证了最坏情况下的0(nlogn)性能,但是我们在实际使用中还是发现快速排序更好用的。具体细节不在此描述。

 

 

 

 

 

 

0 0
原创粉丝点击