“学习笔记”之《算法导论》----第二部分----排序和顺序统计量----第六章----堆排序

本人大四上即将结束,于2018年12月18日购《算法导论》这本书,慢慢看,第一阶段先主要理解各个章节说的算法都是什么意思,书上的课后习题先不做,用得上什么算法我再详细学习。这是官方课后答案的链接

放在开头:没有好的算法,坏的算法之说,重点是针对不同的情况,针对不同的数据,针对不同的需求,去选择算法,改良算法。我的数学功底不强,太难的公式我看不懂,太高深的思想我理解不了,我主要以应用为主,不以解释数学公式为主。

本章介绍了一种堆排序的排序方法。这个方法比插入排序方法快(插入排序是O(n^2)),比分治,也就是归并排序方法节省空间(归并算法,子问题的解决需要多余的空间,这对内存小的机器是致命的)

                                                                        

这个图,就是堆排序的最重要的思想。绿的是第0层,有一个元素,蓝色是第1层,有两个元素,当然了,下面还有很多层,每层元素的个数是2^n。这两个蓝色的结点叫这个绿色结点的孩子(书上是起这个名字,不是我起的)。每个元素代表一个值,这个“堆”,分为最大堆和最小堆,一般我们分析问题用最大堆,最大堆的性质就是我上面这个图中,绿色的值必须比两个蓝色的值中最大的值还大。每一层都是这个样子,每个结点都是这样。每个蓝色还有他的两个孩子,也得符合这个性质。

从这个性质,引出了一系列最大堆的操作方法:建堆,维护堆,堆排序,优先队列。这几个方法也是本章着重讲解的,很简单,不难,我看了伪代码后,说到底就是递归+三个数值找最大。其他的也没什么。

在本章的思考题中,在建堆的方法上,是从上向下还是从下向上建,讨论了一下,最终通过举例论证,从下向上的方法是最佳的,在最差情况下所用时间少。

在本章注记中,提到了Dijkstra算法,正好最近在研究全局规划的算法,感觉这些大方向都是挺相似的。继续研究吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Naruto

你的鼓励是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值