文章 2024-08-19 来自:开发者社区

【初阶数据结构篇】堆的应用(堆排序与Top-K问题)

堆的应用 前言 堆的实现 堆的实现方法 本篇仍然是建小堆来示范 代码位置 gitee 堆的特性决定了它的应用,我们可以用堆来对数据进行排序,即堆排序。 既然涉及到排序,我们需要关注的主要一点就是它的时间复杂度,所以我们先计算建堆需要的两种算法的...

【初阶数据结构篇】堆的应用(堆排序与Top-K问题)
文章 2024-07-19 来自:开发者社区

【数据结构】堆,堆的实现,堆排序,TOP-K问题

​ 1. 堆的概念及结构 堆(Heap)是计算机科学中中一类特殊的数据结构,是最高效的优先级队列,堆通常是一个可以被看作一棵完全二叉树的数组对象。 堆分为最小堆(Min Heap)和 最大堆(Max Heap)。对于最小堆,父结点的值小于等于它的子结点的值。对于最大堆,父结点的值大于等于它的子结点的值; 堆的性质: 1. 堆中某个结点的值总是不大于或不小于其父结点的值。 2. 堆总是...

【数据结构】堆,堆的实现,堆排序,TOP-K问题
文章 2024-05-06 来自:开发者社区

【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)

  堆排序 第一种 假如左右子树都是小堆,我们只需要进行向下调整建堆即可。 下方是建大堆: ...

【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
文章 2024-01-08 来自:开发者社区

数据结构之优先级队列(堆)及top-k问题讲解(二)

数据结构之优先级队列(堆)及top-k问题讲解(一)+https://developer.aliyun.com/article/14135662. PriorityQueue常用接口介绍1.构造方法1.1不含参的构造方法// 不含参的构造方法 public PriorityQueue() { this(DEFAULT_INITIAL_CAPACITY, null); ...

数据结构之优先级队列(堆)及top-k问题讲解(二)
文章 2024-01-08 来自:开发者社区

数据结构之优先级队列(堆)及top-k问题讲解(一)

"哪里会有人喜欢孤独,不过是不喜欢失望。"作者:Mylvzi 文章主要内容:数据结构之优先级队列(堆)  一.优先级队列1.概念  我们已经学习过队列,队列是一种先进先出(FIFO)的数据结构,但是在有些情况下,数据的进出是有优先级的,优先级高的往往需要先"出",优先级低的就需要后"出",此时普通的队列就无法完成这样的操作(也就是数据在插入到队列中后,还需要根据优先级进行位置....

数据结构之优先级队列(堆)及top-k问题讲解(一)
文章 2023-12-06 来自:开发者社区

数据结构 - 堆:TOP-K问题

问题描述TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下:1. 用数据集合中前K个元素来建堆前k个最大的元素,则建小堆....

数据结构 - 堆:TOP-K问题
文章 2023-11-25 来自:开发者社区

数据结构-堆的实现及应用(堆排序和TOP-K问题)(下)

五.建堆上面的代码可以让我们从无到有建立堆但是如果我们要把一个数组改造成堆,而且不能浪费其他空间,只能在原数组上改造,那该怎么办呢?这里我们需要建堆这里以建小堆为例1.自顶向下的建堆方式(利用向上调整算法)根据上文可知进行向上调整算法后,数组中[0,child]区间就变为小堆了,所以我们可以用一个for循环来扩展这个区间让这个区间从[0,1]一直扩到[0,n-1]于是我们可以写出如下代码for ....

数据结构-堆的实现及应用(堆排序和TOP-K问题)(下)
文章 2023-11-25 来自:开发者社区

数据结构-堆的实现及应用(堆排序和TOP-K问题)(上)

一.堆的基本知识点1.知识点1.堆的知识点:堆的知识点 堆的逻辑结构是一颗完全二叉树 堆的物理结构是一个数组 也就是说,给我们是一个数组,可是我们要把它想象成一个完全二叉树来做 通过下标父子结点关系 leftchild = parent * 2 + 1; rightchild = parent * 2 + 2; parent = (child - 1) / 2;(child可以是左孩子,也可以是....

数据结构-堆的实现及应用(堆排序和TOP-K问题)(上)
文章 2023-08-08 来自:开发者社区

[数据结构 -- C语言] 堆实现Top-K问题,原来王者荣耀的排名是这样实现的,又涨知识了

TopK问题的引入:大家在玩王者荣耀的时候都遇到过xxx市第xxx某英雄,xxx区第xxx某英雄。或者是今天我们点外卖的时候想吃某个食物,我们打开美团/饿了么,选离自己最近的选项或者评分最高的选项就会将你所选的店铺的前x名按顺序排出来。福布斯排行榜前10名,胡润富豪排行榜前5名等等。这些问题都是需要对大量的数据排序,选出最大的前K个,这里就用到了TopK算法来解决这一类问题。1、什么是Top-K....

[数据结构 -- C语言] 堆实现Top-K问题,原来王者荣耀的排名是这样实现的,又涨知识了
文章 2023-06-06 来自:开发者社区

【数据结构】堆/堆排序(含top-k问题)(调整方式)(简洁,含代码)

一.堆的逻辑结构与物理结构堆满足两个条件:1.堆中的某个节点的值总是不大于或不小于其父节点的值2.堆总是一颗完全二叉树  1.数组存储方式表示二叉树数组存储表示二叉树只适合完全二叉树,以为会浪费很多空间2.堆中的父子关系3.大小堆的基本概念大根堆:树中父亲结点都大于/等于孩子小根堆:树种父亲结点都小于/等于孩子二.堆的两种调整方式PS:已有堆的基础上,对下标(parent,child)....

【数据结构】堆/堆排序(含top-k问题)(调整方式)(简洁,含代码)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等