数据结构与算法⑬(第四章_中_续二)堆解决Topk问题+堆的概念选择题
TopK问题介绍: TOP-K问题:即求数据中找出前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 在N个数中找出最大/小的前K个 (比如在1000个数中找出最大/小的前10个) 以前的方法:冒泡排序。时间复杂度: O(N^2) 现在找最大的k个数的方法: 方法1:堆排序降序,前N个就是最大的。上篇学过时间复杂度: O(N*logN) 方...
初阶数据结构之---堆的应用(堆排序和topk问题)
引言 上篇博客讲到了堆是什么,以及堆的基本创建和实现,这次我们再来对堆这个数据结构更进一步的深入,将讲到的内容包括:向下调整建堆,建堆的复杂度计算,堆排序和topk问题。话不多说,开启我们今天的内容吧。 堆排序 在讲堆排序之前,我想讲讲建堆的问题。在上篇博客中,我们建堆的时候是存在一个数组(数组中存储着我们建堆所需要的元素),通过一个个取出数组中的元素并插入新的堆中达到建...
数据结构——堆的应用 Topk问题
解题思路 正常思路 将这N个数建成一个大堆,然后Popk次,就可以找出最大的前k个 ; 但是如果N非常大以亿计(10亿个整数所占空间大概4G)那么就会非常耗时耗力,难以计算。 这里给出一种更好的解决办法: ①将前k个数建成小堆;(必须是小堆哦~) ②后面N-k个数依次比较,如果比堆顶的数据大,就替换它进堆; ...
【数据结构与算法】堆的应用:堆排序和topk问题
一.堆排序我们知道冒泡算法的时间复杂度是O(N^2),在数据量很多的时候,N^2是个很可怕的数字,二分算法的时间复杂度是O(logn),但是二分算法有限制条件,实用性并不高,那怎样才能高效实用的排序呢?堆排序就能很好解决上述问题,堆排序的时间复杂度是O(lo...
数据结构-堆和堆排序-TopK问题
1.堆的定义堆是以二叉树的结构方式,所存储的一维数组。逻辑结构:二叉树物理结构:一维数组堆的特性:堆中某个节点的值总是不大于或不小于它的父亲节点的值。根结点值总是大于或等于其左右孩子结点的值,叫大根堆。根节点总是小于或等于其左右孩子结点的值,叫小根堆。堆总是一棵完全二叉树。如下图堆的示例:2.堆的实...
数据结构学习分享之堆的详解以及TopK问题
1. 前言🚩本章就给大家带来久违的堆的知识,如果你还不知道数的相关知识,或者什么是完全二叉树,请跳转树的介绍,本章的堆结构需要树的知识做铺垫.数据结构中的堆结构本质上就是一种完全二叉树,我们上一章说完全二叉树适合用数组的结构来实现.这一章的关键就是向下调整和向上调整!2. 堆的概念以及结构🚩如果有一个关键码的集合K = { , ,...
【数据结构之二叉树简介·顺序存储·应用:堆·堆排序·TOPK问题】
前言前面一篇讲述了树,包括树的定义·相关概念和树的存储结构等,今天将讲述二叉树的的理论及相关应用·堆排序·TOPK问题。1.二叉树简介1.1二叉树定义一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:二叉树是每个结点最多有两个子树的树结构。即二叉树不允许存...
【数据结构】堆的拓展延伸 —— 堆排序 和 TopK问题
一、堆排序堆排序,是根据堆的结构而设计出的一种排序算法,其时间复杂度:O(N * logN),空间复杂度:O(1)。堆排序的前提是需要 构建一个堆,而建堆有两种方法:向上调整建堆:上篇博客中,我们实现过 堆的向上调整算法。我们使用向上调整方法建堆时,需要复用...
【数据结构】利用堆解决TopK问题
前言本篇将详细讲解如何利用小根堆的方法解决 TOPK 问题,这么多数据要处理,该算法时间复度居然只需: 真是🐂🍺到炸了兄弟萌!给我冲!0x01 TopK问题📚 TOPK 问题介绍:在 N个数中找出最大的前 K个 (比如在1000个数中找出最大的前1...
【数据结构】堆的应用 -- 堆排序和TopK问题
前言在开始这一节的内容之前,我们先来回顾一下与堆相关的重点:1、堆是二叉树顺序存储结构的一个具体体现,堆中每个节点的值总是不大于或不小于其父节点的值 (大堆/小堆),堆总是一棵完全二叉树,堆使用顺序表存储元素;2、堆中父节点下标的计算公式:(n-1)/2,左孩子下标:n*...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
算法编程
开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。
+关注