【数据结构】堆排序的向下调整算法

算法解析

要明白向下调整算法首先要掌握数据结构中堆的定义(不是内存中的堆)。
1·概念:堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。
2·堆的分类:最大堆:每个父节点的值都大于孩子节点。最小堆:每个父节点的值都小于孩子节点

向下调整算法的作用就是通过从上到下的算法排序,将任意一个堆变成最小堆或者最大堆。

步骤:(此处以最小堆为例)
1、从根节点的左右孩子中选取一个较小值min
2、当前需要调整的数据与较小值min进行比较

①、大于min:和min进行交换,从交换后的位置继续执行第1步;
②、小于等于min:结束

代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//向下调整算法---以最小堆为例
void Shift_down(int *arr, int n, int curpos) //n-数组大小   curpos-需要调整的位置
<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值