数据结构————堆(TopK、堆)

本文介绍了堆作为数据结构在排序和TopK问题中的应用。堆是一种完全二叉树,分为大堆和小堆,具有特定的性质。文章详细阐述了堆的逻辑结构、数组存储方式、建堆、删除、插入操作,以及如何利用堆解决TopK问题的步骤和代码实现。
摘要由CSDN通过智能技术生成

是数据结构的一种,可用于排序和海量数据处理中的TopK问题
堆的逻辑结构:是一颗完全二叉树,由于是是一颗完全二叉树我们就可通过数组来实现他的存储方式。
在这里插入图片描述
在这里插入图片描述
上面是一颗完全二叉树,分别为树状存储、数组存储。
堆的性质
1.堆分为大堆和小堆。
2.大堆的对顶大于它的左子树和右子树(小堆相反)。
3.左右子树分别为大堆(或者小堆)。
4.为方便计数满足数组的存储方式有以下规律:
a.lchild(左孩子下标) = parent2+1;
b.rchild(右孩子下标) = parent
2+2;
c.parent(父亲节点下标) = (child-1)/2;
有了上述性质对堆在数组中表示和操作就方便多了
对堆有一下操作:
1.建堆(利用向下调整)
2.删除(利用向下调整)
3.插入(利用向上调整)
在讲建堆之前先说明一下向下调整算法(以大堆为实例)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值