第三种堆排序---原地堆排序【Java版】

本文介绍了如何实现原地堆排序,这是一种适用于动态数据维护的排序算法。堆排序的时间复杂度为O(nlogn),而原地堆排序不需要额外空间,因此空间复杂度为O(1)。文章通过Java代码展示了具体实现过程。
摘要由CSDN通过智能技术生成

/**
*实现堆排序[原地堆排序]
*堆适用于动态数据的维护,不适合系统级的排序
*时间复杂度O(nlogn),从小到大排序,前两种堆排序均开辟了额外空间
*不需开辟额外空间,也不需为额外空间进行处理,所以,空间复杂度为O(1)
*根节点从0开始,左孩子:2i+1,右孩子2i+2;
*/

public class HeapSort3 {

    public void heapSort3(int[]arr,int n) {
        //i=(n-2)/2为第一个不是叶子的节点
        //此时即为一个最大堆,arr[0]最大
        for(int i=(n-2)/2;i>=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值