分治策略找第K小元素

1.问题

使用特定的分治策略去寻找无序数组中第 k小的元素。

2.分析

以此递归,直到剩余最后一个数,那个数就是第k小的数

3.算法

int Select(int a[],int l,int r,int k){if (l==r) return a[l];int i=l,j=r;int x = a[i];while(i<j){while(i<j && a[j]>=x) j--;a[i]=a[j];while (i<j && a[i]<=x)i++;a[j] = a[i];}a[i]=x;int num =i-l+1;if(num<k) return Select(a,i+1,r,k-num);return Select(a,l,i,k);
}

4.分析

时间复杂度为O(n)

源码:https://github.com/Ace16602/-3/commit/8fe60146d60aa4bb4b62b2ba0ea0e8af7cfc6096

分治策略找第K小元素相关推荐

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

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

  2. 分治法实验-寻找第k小元素

    问题描述 随机生成含有n个不同元素的数组L(n≥10000),要求找出第k小的元素(k≤n),完成下面的任务: (1)设计一个基于排序选择算法程序,编程调试正确(排序算法自己确定). (2)设计一个时 ...

  3. 求第k小元素:采用特定分治策略

    问题[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]设L是n个元素的集合,从L中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当L按从小到大排好 ...

  4. 练习六(归并排序、第k小元素、棋盘覆盖、大整数乘法)

    文章目录 题目 数组合并 归并排序 第k小元素问题 找中位数 棋盘覆盖问题 大整数乘法 题目 数组合并 题目描述 编写一个程序,将两个有序数组合并成一个更大的有序数组,要求时间复杂度为O(n). 输入 ...

  5. 找中位数,找第k小,还存在问题

    找第k小 上次介绍了找第二大使用的方法时,使用锦标赛的方法,找到最大,在最大的手下败将里找第二大,也就是亚军在冠军的手下败将里产生,亚军只败给过冠军,这种方法比较次数时(n-1) + (logn-1) ...

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

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

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

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

  8. 实验6-选第K小元素

    实验报告 课程名称 <算法分析与设计> 实验日期 2021 年 4 月 18 日 至 2021 年 4 月 25日 学生姓名 石晨昊 所在班级 计算机194 学号 201921221232 ...

  9. 快速排序算法的实现 随机生成区间里的数 O(n)找第k小 O(nlogk)找前k大...

    思路:固定一个数,把这个数放到合法的位置,然后左边的数都是比它小,右边的数都是比它大 固定权值选的是第一个数,或者一个随机数 因为固定的是左端点,所以一开始需要在右端点开始,找一个小于权值的数,从左端 ...

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

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

最新文章

  1. 云服务器重装系统后卡顿,低延迟云服务器发生卡顿丢包检测方法
  2. 树莓派3b python3.6.1 SSL模块调用不起来的坑
  3. 第5周实践项目2 链栈的算法库建立
  4. git仓库迁移(全部分支)
  5. STM32开发 -- Secure CRT 自动记录日志和时间戳功能配置
  6. [Windows驱动开发](二)基础知识——数据结构
  7. chm帮助文档出现乱码
  8. 脱裤子放屁,多此一举
  9. python中 12_python编程中常用的12种基础知识总结
  10. java 大数操作(加减乘除及取余)
  11. 面试题 04.03. 特定深度节点链表
  12. linux下输入法安装设置及中文字体安装
  13. 页面滚动可视区域的获取
  14. 【图像压缩】基于matlab BP神经网络图像压缩【含Matlab源码 741期】
  15. HTML5前端设计——课表制作
  16. web生成pdf后的直接打印,隐藏iframe
  17. 股市里赚钱最快的是什么股?有些股票的机会来了!
  18. 罗斯蒙特333D信号转换器
  19. verilog的免费编译器
  20. Java、JSP个人日程管理系统

热门文章

  1. coffeescript_在客户端上使用CoffeeScript
  2. pacman下载时经常出现Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds
  3. JeecgBoot新增一个module
  4. 黑马程序员SpringBoot基础篇SSMP整合案例
  5. python外汇兑换代码_Python爬取中国银行外汇牌价
  6. java学生管理系统部分截图(八)
  7. 9月25日百度大脑开放日人像特效专场火热报名中!
  8. 图片rar 加密文件
  9. 二维码图片生成(带文字显示)
  10. 如何做一个基于JAVA购物商城系统毕业设计毕设作品(springboot框架)