小根堆(Heap)的详细实现

本文介绍了小根堆的数据结构特性,包括完全二叉树和父节点小于等于子节点的性质。详细讲述了如何用数组表示堆,以及堆的操作,如插入元素、删除最小元素、创建堆的过程。同时,提到了堆排序的实现方法,即通过创建小根堆并不断移除最大元素来达到排序目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆的介绍

Heap是一种数据结构具有以下的特点:

1)完全二叉树
2)heap中存储的值是偏序

Min-heap: 父节点的值小于或等于子节点的值

Max-heap: 父节点的值大于或等于子节点的值

图1

堆的存储

一般都用数组来表示堆,i结点的父结点下标就为(i–1)/2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。

图2

由于堆存储在下标从0开始计数的数组中,因此,在堆中给定下标为i的结点时:

(1)如果i=0,结点i是根结点,无父结点;否则结点i的父结点为结点(i-1)/2;

(2)如果2i+1>n-1,则结点i无左子女;否则结点i的左子女为结点2i+1;

(3)如果2i+2>n-1,则结点i无右子女;否则结点i的右子女为结点2i+2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值