数据结构(8.4_2)——堆排序

堆(Heap)

大根堆:完全二叉树中,根>=左、右

小根堆:完全二叉树中,根<=左、右

相关知识------二叉树的顺序存储

建立大根堆

i的左孩子:2i

i的右孩子:2i+1

i的父结点:i/2

思路:把所有的非终端结点都检查一遍,是否满足大堆根的要求,如果不满足,则进行调整

先处理编号最大的根

接下来处理3号结点

接下来依次处理剩下的根结点

处理完53结点后需要将更下的元素"下坠"

建立大根堆(代码)

基于大根堆进行排序

每一趟将堆定元素加入有序子序列(与待排序序列中的最后一个元素交换),交换完后调整排序序列,再次构成一个大根堆

第一趟

第二趟

.....n-1次排序后

大根堆:递增序列

小根堆:递减序列

基于大根堆进行排序 (代码)

算法效率分析

建堆的时间复杂度:O(n)

下坠的时间复杂度:

稳定性

总结:

练习:

相关推荐
程序猫.19 分钟前
算法刷题笔记:模拟题从入门到实战(含 LeetCode 例题与习题)
java·数据结构·算法
天天喝旺仔1 小时前
Go 泛型实战:从类型参数、约束到可复用泛型容器与函数
数据结构·算法·容器·go
ctlover1 小时前
hot-100刷题笔记
数据结构·python
dtq04241 小时前
数据结构 - 栈
c语言·数据结构·学习
淡海水2 小时前
12-02-性能-数据结构性能调查案例1-5
数据结构·性能优化·c#
OKkankan2 小时前
Python常用容器与导入语法详解(二)
数据结构·python
Cccp.1233 小时前
【leetcode】(六) 图和贪心算法
数据结构·算法·leetcode
y1su3 小时前
【Leetcode】1477. 找两个和为目标值且不重叠的子数组
数据结构·后端·算法·leetcode·职场和发展
空空潍3 小时前
2026年软考中级软件设计师(二):数据结构
数据结构·软考·软件设计师·软设
mmmmath_313 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode