关于堆排序的总结理解

本文详细介绍了堆排序的预备知识,包括堆的定义和性质,以及升序和降序堆排序的具体步骤。通过实例展示了如何进行堆排序,最终得出升序排序的第一轮结果为6-5-3-2-4-1-7。总结了堆排序的关键要点,强调了调整过程和父节点与子节点的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将从相关预备知识、堆排序步骤、总结三方面阐述堆排序。
认真阅读,理解大约只需要5min

一、预备知识

:一种树形序列,所有的堆都必须符合两个条件:
(1)完全二叉树(2)父节点总是小于或大于子节点。
在这里插入图片描述
图形表达和数字表达的转换:图一也写成12-8-10-6-4-7-9,图二也写成2-6-6-6-4-7-9

二、堆排序步骤:

(1)升序进行堆排序:(第一轮)不断调换相邻节点位置,直到父节点总是大于子节点。达成目的后,将首尾元素位置调换,尾元素位置固定不再参与位置调换,剩余n-1个元素继续进行排序。(第二轮)……不断重复,直到所有元素位置固定,完成堆排序,此时可以将图形表达切换回数字表达即为当前序列。
(2)降序进行堆排序:与(1)相比,除了将”父节点总是大于子节点“中的”大于“改为”小于“,其它排序方法完全一致。

实例:

原序列: 7-6-3-5-4-1-2
要求:按照升序进行堆排序,求第一轮排序后的结果
实例解答:画成树状图后发现此时该二叉树已经符合堆的要求,父节点总是大于子节点,由于已经达成该目的,直接调换首尾元素”2-6-3-5-4-1-7“,固定尾元素7的位置,只考虑”2-6-3-5-4-1“的排序,按照升序调换位置直到”父节点总是大于子节点“,变为6-5-3-2-4-1,加上之前的尾元素7,变为6-5-3-2-4-1-7,即为第一轮排序后的结果。第二轮则是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值