飘逸的python - 大数据TopK问题的quick select解法
TopK问题,即寻找最大的K个数,这个问题非常常见,比如从1千万搜索记录中找出最热门的10个关键词.
方法一:
先排序,然后截取前k个数.
时间复杂度:O(n*logn)+O(k)=O(n*logn)。
方法二:
最小堆.
维护容量为k的最小堆.根据最小堆性质,堆顶一定是最小的,如果小于堆顶,则直接pass,如果大于堆顶,则替换掉堆顶,并heapify整理堆,其中heapify的时间复杂度是logk.
时间复杂度:O(k+(n-k)*logk)=O(n*logk)
方法三:
本文的主角.quick select算法.其实就类似于快排.不同地方在于quick select每趟只需要往一个方向走.
时间复杂度:O(n).
def qselect(A,k):if len(A)<k:return Apivot = A[-1]right = [pivot] + [x for x in A[:-1] if x>=pivot]rlen = len(right)if rlen==k:return rightif rlen>k:return qselect(right, k)else:left = [x for x in A[:-1] if x<pivot]return qselect(left, k-rlen) + rightfor i in range(1, 10):print qselect([11,8,4,1,5,2,7,9], i)
飘逸的python - 大数据TopK问题的quick select解法相关推荐
- Python大数据:jieba分词,词频统计
实验目的 学习如何读取一个文件 学习如何使用DataFrame 学习jieba中文分词组件及停用词处理原理 了解Jupyter Notebook 概念 中文分词 在自然语言处理过程中,为了能更好地处理 ...
- 财务大数据比赛有python吗-Python大数据与机器学习之NumPy初体验
本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库. 通过本文系列文章您将能够学到的知识如下: 应用Python进行大数据与机器学习 应用 ...
- zwpython_零起点Python大数据与量化交易
零起点Python大数据与量化交易 所属分类:数值算法/人工智能 开发工具:Python 文件大小:17263KB 下载次数:21 上传日期:2018-05-15 17:24:02 上 传 者:bla ...
- [转载] Python大数据文本分析及应用
参考链接: 使用Python的SQL 3(处理大数据) 实践课题报告: 大数据文本分析与应用 学 校:xxx 学 院:大数据与智能工程学院 专 业:信息工程(数据科学与大数据技术) 年 级:2017级 ...
- Python +大数据-知行教育(四)-意向用户主题看板_全量流程
Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...
- Python+大数据-数仓实战之滴滴出行(二)
Python+大数据-数仓实战之滴滴出行(二) 1. 数据转移 #验证sqoop是否工作 /export/server/sqoop-1.4.7/bin/sqoop list-databases \ - ...
- python+大数据-MySQL-day02(黑马)
python+大数据-MySQL-day02(黑马) 一 MySQL学习日志–变量,函数,流程控制 1.变量 系统变量:全局变量会话变量自定义变量:用户变量局部变量#一.系统变量说明:变量由系统定义, ...
- 2022新版Python+大数据学习路线图,附视频教程
互联网的未来也是人工智能的未来,那就少不了Python+大数据的助力,对于想要转行的小伙伴来说,或许这是一个新兴赛道. 第一阶段 大数据开发入门 学前导读:从传统关系型数据库入手,掌握数据迁移工具.B ...
- 《零起点,python大数据与量化交易》
<零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...
最新文章
- python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
- Subsonic使用中
- 检索数据_16_按照某个模式搜索
- 事件驱动数据管理 微服务和分布式数据管理问题
- Spring数据和Redis
- Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)
- Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待
- 使用ffmpeg快速生成视频截图
- Linux系统基础开发应用及Linux-C用户手册
- 关于程序化交易的点点知识
- vs的windows应用程序上的鼠标为什么一直是加载状态?_了解 JavaScript 应用程序中的内存泄漏...
- 接口测试-解析har文件
- java计算机毕业设计网上书店商城源码+系统+数据库+lw文档+mybatis+运行部署
- keepAlive和activated
- 数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
- java俄罗斯方块七中图形类_shell脚本俄罗斯方块--代码真正详解
- rtx3070显卡什么水平什么档次 RTX3070怎么样
- 云平台(用户、配额管理)
- 零基础学习3D游戏建模要美术基础吗
- [CVE-2020-9496]Apache Ofbiz RCE