继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第18天【养成记】嵌入式挑战第18天 学习堆排序之原理讲解

rubyc
关注TA
已关注
手记 23
粉丝 7
获赞 1

课程名称:

物联网/嵌入式工程师

课程章节(阶段二第七周 堆排序之原理讲解 1-8):

堆排序之原理讲解课程链接

老师:

大白老师

课程内容:

学习常用排序中的堆排序

学习笔记:

概念:

  • 堆是一种类似完全二叉树的数据结构,可以分为大顶堆,小顶堆,而堆排序就是基于这种结构而产生的一种程序算法。

  • 大顶堆:每个节点的值都大于或则等于其左右孩子的值。

  • 小顶堆:每个节点的值都小于或则等于其左右孩子的值。

  • 堆排序:若是需要进行堆排序的代码,一定需要先把树构建成大顶堆或则小顶堆,然后在进行排序。

思路:
1.首先,将待排序的数组构造成一个大顶堆,此时,整个数组的最大值就是堆结构的顶端。

2.n为元素个数,将顶端的树与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个位为n - 1.

3.将剩余的n - 1个数再构造成大顶堆,在将顶端数与 n - 1位置的数交换,如此返回执行,便能得到有序数组。

打卡:

图片描述

图片描述

图片描述

课程评价

本节主要讲解堆排序,对于堆排序,最重要的两个操作是构造初始化堆和重新调整堆。大白老师对堆排序的每个步骤讲的都很清楚,特别是对大根堆,小根堆的调整的讲解,很容易让人理解。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP