如何用堆和堆排序算法解决长尾词的TOPK问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计7219个文字,预计阅读时间需要29分钟。
这篇博客将尽我所能讲解堆,同时详细解释堆中重要的向下和向上调整算法,以及排序中的两种实现方法和堆的TOPK问题。堆是一种特殊的树形结构,我们之前已经介绍过树了,而堆就是一种。
堆通常是一棵完全二叉树,其中每个节点的值都大于或等于(或小于或等于)其子节点的值。根据这个性质,堆分为最大堆和最小堆。
最大堆中,每个父节点的值都大于或等于其子节点的值。最小堆则相反。
堆排序是一种利用堆的性质进行排序的算法。它包括两个步骤:建立堆和调整堆。
建立堆:将待排序的序列看作是一棵完全二叉树,然后从最后一个非叶子节点开始,依次向上调整,使其满足堆的性质。
调整堆:在排序过程中,每次从堆顶取出最大(或最小)元素,然后将其与最后一个元素交换,再对剩余的元素进行一次调整,使其再次满足堆的性质。
排序的两种实现方法:
1. 选择排序:每次从剩余元素中选择最大(或最小)的元素放到序列的起始位置。
2. 插入排序:将待排序的序列看作是一个堆,然后从第二个元素开始,依次将每个元素插入到已经排序的序列中,并调整堆。
堆的TOPK问题:给定一个序列,找出其中的第K大(或第K小)的元素。
以上就是对堆的简要介绍。
这篇博客我会尽我自己的所能讲解堆,同时详细的解释堆中重要的向下和向上调整算法,以及推排序的两种实现方法,和堆的TOPK问题。
堆是什么
我们之前已经介绍过了树,而堆就是一种完全二叉树。
这里我放一张二叉树的图
下面我来解释一下满二叉树,和完全二叉树的区别:
满二叉树是指除了叶子节点外,每个节点都有两个子节点,且所有叶子节点都在树的同一层次上。换句话说,满二叉树是一颗高度为h,且具有2^(h+1)-1个节点的二叉树。
本文共计7219个文字,预计阅读时间需要29分钟。
这篇博客将尽我所能讲解堆,同时详细解释堆中重要的向下和向上调整算法,以及排序中的两种实现方法和堆的TOPK问题。堆是一种特殊的树形结构,我们之前已经介绍过树了,而堆就是一种。
堆通常是一棵完全二叉树,其中每个节点的值都大于或等于(或小于或等于)其子节点的值。根据这个性质,堆分为最大堆和最小堆。
最大堆中,每个父节点的值都大于或等于其子节点的值。最小堆则相反。
堆排序是一种利用堆的性质进行排序的算法。它包括两个步骤:建立堆和调整堆。
建立堆:将待排序的序列看作是一棵完全二叉树,然后从最后一个非叶子节点开始,依次向上调整,使其满足堆的性质。
调整堆:在排序过程中,每次从堆顶取出最大(或最小)元素,然后将其与最后一个元素交换,再对剩余的元素进行一次调整,使其再次满足堆的性质。
排序的两种实现方法:
1. 选择排序:每次从剩余元素中选择最大(或最小)的元素放到序列的起始位置。
2. 插入排序:将待排序的序列看作是一个堆,然后从第二个元素开始,依次将每个元素插入到已经排序的序列中,并调整堆。
堆的TOPK问题:给定一个序列,找出其中的第K大(或第K小)的元素。
以上就是对堆的简要介绍。
这篇博客我会尽我自己的所能讲解堆,同时详细的解释堆中重要的向下和向上调整算法,以及推排序的两种实现方法,和堆的TOPK问题。
堆是什么
我们之前已经介绍过了树,而堆就是一种完全二叉树。
这里我放一张二叉树的图
下面我来解释一下满二叉树,和完全二叉树的区别:
满二叉树是指除了叶子节点外,每个节点都有两个子节点,且所有叶子节点都在树的同一层次上。换句话说,满二叉树是一颗高度为h,且具有2^(h+1)-1个节点的二叉树。

