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解法相关推荐

  1. Python大数据:jieba分词,词频统计

    实验目的 学习如何读取一个文件 学习如何使用DataFrame 学习jieba中文分词组件及停用词处理原理 了解Jupyter Notebook 概念 中文分词 在自然语言处理过程中,为了能更好地处理 ...

  2. 财务大数据比赛有python吗-Python大数据与机器学习之NumPy初体验

    本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库. 通过本文系列文章您将能够学到的知识如下: 应用Python进行大数据与机器学习 应用 ...

  3. zwpython_零起点Python大数据与量化交易

    零起点Python大数据与量化交易 所属分类:数值算法/人工智能 开发工具:Python 文件大小:17263KB 下载次数:21 上传日期:2018-05-15 17:24:02 上 传 者:bla ...

  4. [转载] Python大数据文本分析及应用

    参考链接: 使用Python的SQL 3(处理大数据) 实践课题报告: 大数据文本分析与应用 学 校:xxx 学 院:大数据与智能工程学院 专 业:信息工程(数据科学与大数据技术) 年 级:2017级 ...

  5. Python +大数据-知行教育(四)-意向用户主题看板_全量流程

    Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...

  6. Python+大数据-数仓实战之滴滴出行(二)

    Python+大数据-数仓实战之滴滴出行(二) 1. 数据转移 #验证sqoop是否工作 /export/server/sqoop-1.4.7/bin/sqoop list-databases \ - ...

  7. python+大数据-MySQL-day02(黑马)

    python+大数据-MySQL-day02(黑马) 一 MySQL学习日志–变量,函数,流程控制 1.变量 系统变量:全局变量会话变量自定义变量:用户变量局部变量#一.系统变量说明:变量由系统定义, ...

  8. 2022新版Python+大数据学习路线图,附视频教程

    互联网的未来也是人工智能的未来,那就少不了Python+大数据的助力,对于想要转行的小伙伴来说,或许这是一个新兴赛道. 第一阶段 大数据开发入门 学前导读:从传统关系型数据库入手,掌握数据迁移工具.B ...

  9. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

最新文章

  1. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
  2. Subsonic使用中
  3. 检索数据_16_按照某个模式搜索
  4. 事件驱动数据管理 微服务和分布式数据管理问题
  5. Spring数据和Redis
  6. Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)
  7. Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待
  8. 使用ffmpeg快速生成视频截图
  9. Linux系统基础开发应用及Linux-C用户手册
  10. 关于程序化交易的点点知识
  11. vs的windows应用程序上的鼠标为什么一直是加载状态?_了解 JavaScript 应用程序中的内存泄漏...
  12. 接口测试-解析har文件
  13. java计算机毕业设计网上书店商城源码+系统+数据库+lw文档+mybatis+运行部署
  14. keepAlive和activated
  15. 数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
  16. java俄罗斯方块七中图形类_shell脚本俄罗斯方块--代码真正详解
  17. rtx3070显卡什么水平什么档次 RTX3070怎么样
  18. 云平台(用户、配额管理)
  19. 零基础学习3D游戏建模要美术基础吗
  20. [CVE-2020-9496]Apache Ofbiz RCE

热门文章

  1. C# Winform 窗体大小固定问题,使用CSkin后FormBorderStyle属性修改后依然可以改变大小
  2. TLS/SSl相关的攻击漏洞及检测方法大杂烩!
  3. 数学建模森林着火问题Matlab,数学建模森林救火问题.doc
  4. 数据结构-树,二叉树,森林
  5. HDU 2102 A计划(广度优先搜索+数据)
  6. java lrucache_Java LruCache 的使用及原理
  7. A*算法 puzzle8数码
  8. 白头搔更短,SSTI惹人心!
  9. cocodPods导入第三方库
  10. (JavaIO编程案例)投票选举