堆排序

堆排序是一种基于完全二叉树的排序算法,首先构建大根堆,然后将最大元素与末尾元素交换,再重新调整堆,重复此过程直至排序完成。通过n-1次排序选出n-1个最大元素,有序区从尾部逐步扩大至整个数组。
摘要由CSDN通过智能技术生成

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

要将初始数组调整为一个大根堆,就必须将它所对应的完全二叉树中以每一结点为根的子树都调整为堆。显然只有一个结点的树是堆,而在完全二叉树中,所有序号大于n/2的结点都是叶子,因此以叶子结点为根的子树均已是堆。这样,我们需要依次将以第n/2个结点之前的结点为根的子树都调整为堆。

堆排序的基本思想:

① 先将初始数据R[1..n]建成一个大根堆,此堆为初始的无序区

② 再将关键字最大的堆顶元素R[1]和无序区的最后一个记录R[n]交换,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值