14、编程珠玑笔记十四堆

14、编程珠玑笔记十四堆

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

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

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

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

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

1.      优先级队列

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

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

对比算法运行时间如下:

图1


堆使用需要额外的内存。

 

2.  一种排序

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

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值