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

堆(Heap)

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

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

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

建立大根堆

i的左孩子:2i

i的右孩子:2i+1

i的父结点:i/2

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

先处理编号最大的根

接下来处理3号结点

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

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

建立大根堆(代码)

基于大根堆进行排序

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

第一趟

第二趟

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

大根堆:递增序列

小根堆:递减序列

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

算法效率分析

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

下坠的时间复杂度:

稳定性

总结:

练习:

相关推荐
王RuaRua1 分钟前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
一只鱼^_36 分钟前
牛客练习赛138(首篇万字题解???)
数据结构·c++·算法·贪心算法·动态规划·广度优先·图搜索算法
寒小松1 小时前
Problem E: List练习
java·数据结构·list
清幽竹客2 小时前
redis数据结构-02(INCR、DECR、APPEND)
数据结构·redis
Akiiiira2 小时前
【数据结构】线性表
数据结构
小狗祈祷诗2 小时前
day20-线性表(链表II)
c语言·数据结构·链表
普通的冒险者3 小时前
几个简单的数组小练习(适合初学)
java·数据结构
How_doyou_do4 小时前
数据结构-堆
数据结构
小陈的进阶之路5 小时前
计算机大类专业数据结构下半期实验练习题
数据结构·算法·深度优先
不会计算机的捞地5 小时前
【数据结构入门训练DAY-30】数的划分
数据结构·算法·深度优先