1. 问题[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]设L是n个元素的集合,从L中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当L按从小到大排好序之后,排在第k个位置的元素。
  2. 解析[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]

将所有元素5个一组,分成n/5(上界)组。
取出每一组中位数。
递归调用selection算法查找上一步中所有中位数的中位数,奇偶分别讨论,偶数个中位数的情况下设定为选取中间小的一个。
用x来分割数组,设小于等于x的个数为k,大于x的个数即为n-k。
若i==k,返回x;若i<k,在小于x的元素中递归查找第i小的元素;若i>k,在大于x的元素中递归查找第i-k小的元素。终止条件:n=1时,返回的即是i小元素。
5. 设计[核心伪代码]

6. 分析[算法复杂度推导]
时间复杂度:O(n)
7. 源码[github源码地址]
https://github.com/hackkkkkk/calculate

求第k小元素:采用特定分治策略相关推荐

  1. 分治算法 求第k小元素 O(n) O(nlog2^n)

    BFPRT算法:时间复杂度O(n)求第k小的数字(分治算法+快排) 各位小伙伴,由于本篇文章代码太过杂乱.我于 2018年12月25日 对文中介绍的算法进行了重写.点击上面的蓝色字体,可以阅读重写后的 ...

  2. BFPRT算法:时间复杂度O(n)求第k小的数字(分治算法+快排)

    我自己搭建了博客,以后可能不太在CSDN上发博文了,https://www.qingdujun.com/ . 去年写了一篇<分治算法 求第kkk小元素 O(n)O(n)O(n) & O( ...

  3. 借组磁带机求第K小元素

    如果输入在磁带机上, 你的机器只有一个磁带机驱动器和几十字的内存,如何找第K小的数 1. 遍历一遍磁带,随即选择一个数M 2. 再遍历一遍磁带, 计算大于和小于M的个数,这样就可以获得数M在总序列中的 ...

  4. 求数列中的第1~k小元素

    1.问题描述 设计算法实现在一个具有在n各互不相同元素的数组A[1-n]中找出所有前k个最小元素的问题,这里k不是常量,即它是输入数据的一部分.要求算法的时间复杂性为Θ(n). 2. 具体要求 输入的 ...

  5. 第K小元素 时间复杂度n

    参考视频bilibil fjnuzs 文章目录 一.题目分析 二.计算思路伪代码 三.Java实现 四.时间复杂度 一.题目分析 给出一个n个元素的序列,求其中的第k小元素(即序列按升序排序后的第k个 ...

  6. 堆实战(动态数据流求top k大元素,动态数据流求中位数)

    动态数据集合中求top k大元素 第1大,第2大 ...第k大 k是这群体里最小的所以要建立个小顶堆 只需要维护一个大小为k的小顶堆 即可当来的元素(newCome)> 堆顶元素(smallTo ...

  7. 【最详细】BFPRT算法:时间复杂度O(n)求第k小的数字

    去年写了一篇对快排进行改进的算法,可以在时间复杂度 O(n)O(n)O(n)的情况下,找到第kkk小的数字. 那时候,我还不知道这个算法叫BFPRT算法--现在知道了,还知道它又被称为中位数的中位数算 ...

  8. python第k序列元素查找_python查找第k小元素代码分享 -电脑资料

    复制代码代码如下: # -*- coding: utf-8 -*- from random import randint from math import ceil, floor def _parti ...

  9. 快速排序_查找第k小元素

    快速排序_查找第k小元素 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. 一个问题,快排你的 ...

最新文章

  1. Docker 入门到实践笔记2
  2. number to string - LeetCode【数字 = 字符串】
  3. Graphpad Prism 9绘制子列图与柱状图
  4. OC开发_整理笔记—— CoreLocation(1)基本使用
  5. 通过扩展方法,将C#的DateTime(日期)转换成人性化的显示
  6. linux下 如何调试php,linux下使用gdb对php源码调试
  7. 设计模式之适配器模式(Adapter Pattern)
  8. 为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?
  9. 第一次立会(2019.3.24)
  10. 关于数组相关乱七八糟
  11. 关于结构体嵌套的字节大小的问题
  12. 数据通信与网络技术之网络基础
  13. like效率 regexp_Oracle中REGEXP_LIKE与LIKE的区别
  14. Lingo软件入门【数学建模】
  15. 一文讲解ARM、STM32之间的关系以及STM单片机介绍
  16. VOS防盗打,防攻击的一些看法
  17. 横向对比EXT4,带你感受真实的Linux文件系统F2FS
  18. word如何在任意页开始添加页码
  19. Mysql之to_base64编码from_base64解密和AES_ENCRYPT加密AES_DECRYPT解密
  20. Photoshop钢笔工具抠图和图层填充

热门文章

  1. Web 服务器 之 简易WWW服务器的架设
  2. JavaScript 异步编程--Generator函数、async、await
  3. 解决dell poweredge 2850 服务器系统内存限制
  4. SilverlightMMORPG窝窝世界明天4月28日封测
  5. 基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件...
  6. https、SSL与数字证书介绍
  7. MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?
  8. Kubernetes 必备工具:2021
  9. 一位老哥写文怒刚 Redis 作者
  10. 这篇实战攻略,带你轻松入门Elastic search