堆排序算法

堆排序是一种基于完全二叉树的排序算法,通过构建小根堆或大根堆来实现排序。它包括建立堆、交换堆顶元素与末尾元素、重新调整堆的过程。在排序过程中,小根堆会得到非递减序列,大根堆则得到非递增序列。本文还提供了堆排序的代码实现。
摘要由CSDN通过智能技术生成

相关理论:

堆定义:

堆是一棵以k1为根的完全二叉树。若对该二叉树的结点进行编号(从上到下,从左到右),得到的序列就是将二叉树的结点以顺序结构存放,堆的结构正好和该序列结构完全一致。

n个元素的序列H={k1, k2 , … kn} ,满足:

 性质:

①  堆是一棵采用顺序存储结构的完全二叉树, k1是根结点;

②  堆的根结点是关键字序列中的最小(或最大)值,分别称为小(或大)根堆;

③  从根结点到每一叶子结点路径上的元素组成的序列都是按元素值(或关键字值)非递减(或非递增)的;

 ④堆中的任一子树也是堆。

利用堆顶记录的关键字值最小(或最大)的性质,从当前待排序的记录中依次选取关键字最小(或最大)的记录,就可以实现对数据记录的排序,这种排序方法称为堆排序

排序思想

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值