C++实现堆排序

本文介绍了堆排序的原理和实现方法,通过建立和调整堆,详细解释了如何使用C++进行堆排序。堆排序是一种高效的排序算法,适用于大数据量的排序。文章还提供了具体的代码实现,包括Shift和HeapSort两个关键函数。
摘要由CSDN通过智能技术生成

了解什么是堆

什么是堆,堆的定义是:n个元素的序列,{k1 ,k2,k3,…,kn},当且满足如下关系式,称为堆。
ki < k2i && ki < k2i+1

ki > k2i && ki > k2i+1
如下所示:在这里插入图片描述

如何利用堆来排序

将一个无序序列建成堆

堆看作是一个完全二叉树,堆就完全满足二叉树的五个性质,如果不清楚的可以去看看二叉树的性质。
从堆中最后一个非终点[n / 2] 个元素,向前慢慢筛选,一直到[ 1 ] ,

如何输出堆顶元素后,调整剩余元素为堆

如果是每一个父节点都对左右孩子节点大的,就是大根堆,可知,堆顶的元素就是最大的,相反的话,就是小根堆,堆顶元素就是最小的。
大根堆用来做顺序,每次将堆顶的元素,和堆尾的元素交换,然后将剩下的节点变成大根堆,最后一个元素就变成了最大的。小根堆相反。

合适的代码实现

数据的基本类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值