堆排序——向下调整

之前我们要想实现堆排序,是运用建堆代码来实现的:

向上调整建堆------向下调整排序

那么去我们可不可以只适用一种调整方法(向下调整)就能实现这样的功能呢?

向要只使用向下调整就实现堆排序

首先就是把数组里的值使用向下调整就变成堆,但是想要使用向下调整,应该出了根之外其他都满足堆才行

向下调整建堆------向下调整排序


总结,把一个树,拆分成单个单个的树,然后向下调整,把他们都变成堆,最后整个树就成了堆

向上调整,向下调整代码总结:

向下调整

可以看出向上调整的时间复杂度是:N*logN

向下调整的时间复杂度为:N

想要在一个文件中有一亿个数据中找最大的前100个数据

1,从文件中读取100个数据,建立小堆

2、在依次读取文件中剩余的数据,于堆顶数据比较,只要比堆顶大就替换,然后再向下调整,这样把所有剩余的数于堆顶数据比较完后,堆里的数据就是最大的前100个数

补充:树的一个做题性质

在一个树中,节点为0的节点数,是节点为2的节点数+1:n0=n2+1

在一个完全二叉树中节点为1的节点数最多只会有一个

例题:

相关推荐
李斯啦果7 小时前
【PTA】L1-019 谁先倒
数据结构·算法
Mr Xu_1 天前
告别硬编码:前端项目中配置驱动的实战优化指南
前端·javascript·数据结构
czxyvX1 天前
017-AVL树(C++实现)
开发语言·数据结构·c++
数智工坊1 天前
【数据结构-队列】3.2 队列的顺序-链式实现-双端队列
数据结构
elseif1231 天前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论
徐小夕@趣谈前端1 天前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
Nebula_g1 天前
线程进阶: 无人机自动防空平台开发教程(更新)
java·开发语言·数据结构·学习·算法·无人机
xuxie991 天前
day 23 树
数据结构
EnglishJun1 天前
数据结构的学习(四)---栈和队列
数据结构·学习
数智工坊1 天前
【数据结构-特殊矩阵】3.5 特殊矩阵-压缩存储
数据结构·线性代数·矩阵