堆排序——向下调整

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

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

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

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

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

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


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

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

向下调整

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

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

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

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

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

补充:树的一个做题性质

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

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

例题:

相关推荐
dot to one2 小时前
C++ 渗透 数据结构中的二叉搜索树
数据结构·c++·算法·visual studio
长安城没有风2 小时前
数据结构 集合类与复杂度
java·数据结构
好易学·数据结构2 小时前
可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)
数据结构·算法·leetcode·二叉树·力扣·序列化·牛客
MSTcheng.4 小时前
【数据结构】算法的复杂度
数据结构·算法
姜行运6 小时前
数据结构【二叉搜索树(BST)】
android·数据结构·c++·c#
yzlAurora15 小时前
删除链表倒数第N个节点
数据结构·链表
进击的小白菜16 小时前
如何高效实现「LeetCode25. K 个一组翻转链表」?Java 详细解决方案
java·数据结构·leetcode·链表
拾忆-eleven16 小时前
C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
数据结构·c++·算法
我是一只鱼022318 小时前
LeetCode算法题 (反转链表)Day17!!!C/C++
数据结构·c++·算法·leetcode·链表
ice___Cpu20 小时前
数据结构 - 10( B- 树 && B+ 树 && B* 树 4000 字详解 )
数据结构