数据结构-----最大堆的实现

本文介绍了大根堆的概念,包括大根堆与小根堆的定义,并讲解了大根堆的初始化、插入和删除操作。通过一个堆类的设计,详细阐述了私有成员变量与成员函数的功能。在实现过程中,使用数组而非节点指针存储元素,并重点描述了初始化时自底向上调整堆结构,以及插入和删除时自顶向下调整的操作步骤。
摘要由CSDN通过智能技术生成

定义:一棵大根树(小根树)是这样一棵树,其中每一个节点的值都大小(小于)或等于其子节点(如果有子节点的话)的值。

一个大根堆(小根堆)既是大根树(小根树)也是完全二叉树。

大根堆

小根堆



本篇主要实现大根堆的初始化,插入以及删除操作。

在实现这些之前,先来简单介绍一下大根堆类的主要数据成员:

私有成员变量:

heap:一维数组,用于存储堆中的元素;

heapSize:整型变量,用于记录堆中元素个数;

arrayLength:整形变量,用于记录堆最大容量,即最多可以容纳多少个元素;

公有成员函数:

initialize(T* ,int):初始化最大堆,第一个形参为初始化的数组,第二个形参为元素个数;

remove(int);删除最大堆中特定元素;

push(const T&);添加新元素;

私有成员函数:

changeArrayLength(T*, int):当实际容量等于额定容量时,扩充额定容量;

adjust(T&,int,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值