排序算法——堆排序

本文介绍了堆排序的概念,包括二叉树、完全二叉树、大根堆和小根堆。堆排序是一种基于二叉堆的数据结构设计的排序算法,通过构建大根堆或小根堆实现升序或降序排列。文章详细阐述了堆排序的算法思想,从构建堆到调整过程,并给出了一段Java代码实现。最后,分析了堆排序的时间复杂度和空间复杂度,以及稳定性。

目录

1️⃣概念回顾

二叉树

完全二叉树

大根堆

小根堆

 2️⃣堆排序

 基本介绍:

算法思想:

实例:

思路步骤:

代码实现:

算法性能分析:


学习堆排序之前,先回顾以下概念:

1️⃣概念回顾

二叉树:

二叉树是指树中节点的度不大于2的有序树。

(节点的度:一个节点拥有子树的数目称为节点的度)

(分枝结点 度不为0的结点)

完全二叉树:

完全二叉树是指:二叉树上每一层都是满的,或者最后一层没填满并且最后一层的叶子节点集中在树的左部

例如:

(需要注意的是,满二叉树肯定是完全二叉树,而完全二叉树不一定是满二叉树。)

大根堆

每个结点的值都大于等于其左、右孩子的值。

 

小根堆

每个结点的值都小于等于其左、右孩子的值。

 2️⃣堆排序

堆排序使用的是二叉堆的概念,二叉堆是一颗完全二叉树。

思考:从逻辑层面,如何将需要排序的数组转换成完全二叉树的形式?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心皿月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值