Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BFPRT算法&&TOP-K问题

BFPRT算法&&TOP-K问题

原创
作者头像
大学里的混子
修改于 2019-02-25 03:00:03
修改于 2019-02-25 03:00:03
1.1K0
举报
文章被收录于专栏:LeetCodeLeetCode

一、BFPRT算法

在一大堆数中求其前k大或前k小的问题,简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是BFPRT算法,其又称为中位数的中位数算法,该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出,最坏时间复杂度为O(n)O(n)。

在首次接触TOP-K问题时,我们的第一反应就是可以先对所有数据进行一次排序,然后取其前k即可,但是这么做有两个问题:

(1):快速排序的平均复杂度为O(nlogn)O(nlogn),但最坏时间复杂度为O(n2)O(n2),不能始终保证较好的复杂度。

(2):我们只需要前k大的,而对其余不需要的数也进行了排序,浪费了大量排序时间。

除这种方法之外,堆排序也是一个比较好的选择,可以维护一个大小为k的堆,时间复杂度为O(nlogk)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
堆的应用:堆排序和TOP-K问题
上次才讲完堆的相关问题:二叉树顺序结构与堆的概念及性质(c语言实现堆 那今天就接着来进行堆的主要两方面的应用:堆排序和TOP-K问题
是Nero哦
2024/01/18
1690
堆的应用:堆排序和TOP-K问题
学习程序员必知必会的基础算法(收藏)
近年来学习python的程序员愈来愈多,有的同学选择了python培训机构,也有的人觉得自己天赋好选择了自学不管大家怎么去学习,在学习python基础的过程中,肯定离不开的就是基础算法,今天就为大家介绍几大学习中的基础算法。
小小科
2020/07/21
1K0
当今世界最为经典的十大算法 博客分类: 经典文章转载 算法数据结构网络应用数据挖掘J#
本文转载自July CSDN博客:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx
chroya
2018/10/31
1.3K0
再扣亿点点细节,快速排序算法的分析与优化
今天我们继续来看《算法第四版》一书,在上一篇文章当中我们介绍了快速排序的原理,并且也用Python和C++对于快排的两种实现方式进行了实现。
TechFlow-承志
2022/09/21
4910
头秃警告,五个顶级算法大佬创造的算法究竟有多牛逼?
熟悉Python的同学可能知道,在Python当中我们可以使用heapq这个库在 的时间内筛选出前K大或者是前K小的元素,我们在之前的文章当中也曾讨论过。这种快速筛选元素的算法称为快速选择算法。
TechFlow-承志
2022/08/26
5680
头秃警告,五个顶级算法大佬创造的算法究竟有多牛逼?
算法浅谈——快速筛出topK的快速选择算法
在之前Python系列当中,我们介绍了heapq这个库的用法,它可以在的时间里筛选出前K大或者前K小的元素。今天我们一起来看一个可以更快实现选择的快速选择算法。
TechFlow-承志
2020/03/05
9320
算法浅谈——快速筛出topK的快速选择算法
【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下: 1.用数据集合中前K个元素来建堆
秦jh
2024/01/19
4380
【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
数据结构与算法:堆排序和TOP-K问题
冒泡排序的时间复杂度为O(N2),空间复杂度为O(1);qsort排序的时间复杂度为 O(nlogn),空间复杂度为O(logn),而今天所讲到的堆排序在时间与空间复杂度上相比于前两种均有优势
用户11029103
2024/03/19
1960
数据结构与算法:堆排序和TOP-K问题
【算法】TopK问题超详解
比如大众点评的必吃榜;成绩单的前十名;各种数据的最值筛选; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOc0UsTc-1721352065061)(https://i-blog.csdnimg.cn/direct/d54a704560c64ea0991b938683e70d1e.png)]
Skrrapper
2024/08/05
1610
这次用近万字的讲解带你干掉堆!
大家好,我是多选参数的程序锅,一个正在捣鼓操作系统、学数据结构和算法以及 Java 的失业人员。最近忙着搞论文,还有刷刷 LeetCode 上的题,推文的事被耽误了一下,但是并没有忘记要发推文,虽迟但到吧。
syy
2020/09/18
4930
十大算法,让你轻松进阶高手
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 算法步骤: 1 从数列中挑出一个元素,称为
我是攻城师
2018/05/14
8440
Top K问题
如果你对上述两者的原理有所了解,可以继续往下看.如果不了解,可以点击链接先看一下基础~.
呼延十
2019/06/26
7720
十大经典排序算法 -- 动图讲解
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
互扯程序
2019/06/14
1.4K0
【数据结构篇】探索堆的算法的巧妙
注:时间复杂度计算最坏情况下的次数,最差的情况就是堆中每个节点都要移动尽可能多的步数,可以得到下面计算公式:
熬夜学编程的小王
2024/11/20
1250
【数据结构篇】探索堆的算法的巧妙
【数据结构】二叉树顺序存储结构堆的应用以及解决TOP-K问题
前面我们学习了堆这个数据结构,这种数据结构是一种顺序结构存储的完全二叉树,现在我们来看一看堆的应用。
Crossoads
2024/10/21
1090
【数据结构】二叉树顺序存储结构堆的应用以及解决TOP-K问题
【算法与数据结构】堆排序&&TOP-K问题
TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 TOP-K问题是数据挖掘和信息检索中的一个重要问题。
学习起来吧
2024/03/23
1630
【算法与数据结构】堆排序&&TOP-K问题
程序员必须知道的十大基础实用算法及其讲解
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn) 次比较。在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 算法步骤: 1. 从数列中挑出一个元素,称为「基准」(pivot),
CSDN技术头条
2018/02/06
1.1K0
程序员必须知道的十大基础实用算法及其讲解
为什么每个程序员都需要学习算法?
懂算法的程序员 不懂算法的程序员 算法的力量 算法是计算机科学领域最重要的基石之一,但却受到了一些程序员的冷落。 许多小伙伴看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。 其实大家都被这些公司和培训机构误导了。 编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论。 例如数据结构、算法、编译原理、
老九君
2018/03/06
1.6K0
为什么每个程序员都需要学习算法?
四千字总结实现所有面试会考的排序算法【基于Python实现】
一般排序算法最常考的:快速排序和归并排序。这两个算法体现了分治算法的核心观点,而且还有很多出题的可能。
程序员迪迪
2022/01/05
2820
【数据结构】堆的实现和堆排序--TOP-K问题
堆是一种特殊的树形数据结构,常用于实现优先队列和堆排序。它基于完全二叉树,通常用数组表示。主要操作包括插入(通过上滤维护堆性质)和删除(通常删除堆顶元素,通过下滤恢复堆性质)。
用户11375356
2024/11/22
1100
【数据结构】堆的实现和堆排序--TOP-K问题
推荐阅读
相关推荐
堆的应用:堆排序和TOP-K问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档