堆是数据结构的一种,可用于排序和海量数据处理中的TopK问题
堆的逻辑结构:是一颗完全二叉树,由于是是一颗完全二叉树我们就可通过数组来实现他的存储方式。
上面是一颗完全二叉树,分别为树状存储、数组存储。
堆的性质:
1.堆分为大堆和小堆。
2.大堆的对顶大于它的左子树和右子树(小堆相反)。
3.左右子树分别为大堆(或者小堆)。
4.为方便计数满足数组的存储方式有以下规律:
a.lchild(左孩子下标) = parent2+1;
b.rchild(右孩子下标) = parent2+2;
c.parent(父亲节点下标) = (child-1)/2;
有了上述性质对堆在数组中表示和操作就方便多了
对堆有一下操作:
1.建堆(利用向下调整)
2.删除(利用向下调整)
3.插入(利用向上调整)
在讲建堆之前先说明一下向下调整算法(以大堆为实例)
数据结构————堆(TopK、堆)
最新推荐文章于 2024-07-27 19:37:48 发布
本文介绍了堆作为数据结构在排序和TopK问题中的应用。堆是一种完全二叉树,分为大堆和小堆,具有特定的性质。文章详细阐述了堆的逻辑结构、数组存储方式、建堆、删除、插入操作,以及如何利用堆解决TopK问题的步骤和代码实现。
摘要由CSDN通过智能技术生成