【10大基础算法】线性查找算法-NO5
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。
算法步骤:
将n个元素每5个一组,分成n/5(上界)组。
取出每一组的中位数,任意排序方法,比如插入排序。
递归的调用selection算法查找上一步中所有中位数的中位数,设为x,偶数个中位数的情况下设定为选取中间小的一个。
用x来分割数组,设小于等于x的个数为k,大于x的个数即为n-k。
若i==k,返回x;若i<k,在小于x的元素中递归查找第i小的元素;若i>k,在大于x的元素中递归查找第i-k小的元素。
终止条件:n=1时,返回的即是i小元素。
【10大基础算法】线性查找算法-NO5相关推荐
- 算法工程师必知必会10大基础算法!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Cricode 博客园 来源:博客园 链接:http://kb. ...
- 程序员必须知道的10大基础实用算法及其讲解
2014-06-17 WEB开发者 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但 ...
- 【随笔】游戏程序开发必知的10大基础实用算法及其讲解
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n logn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常 ...
- dijkstra算法原理_这 10 大基础算法,程序员必知必会!
来源:博客园原文地址:http://kb.cnblogs.com/page/210687/算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次 ...
- 《转》程序员必须知道的10大基础实用算法及其讲解
来源: Cricode 发布时间: 2014-06-19 08:27 阅读: 2018 次 推荐: 8 原文链接 [收藏] 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算 ...
- 第10章 基础API与常见算法
第10章 基础API与常见算法 学习目标 了解数学相关API 了解日期时间API 了解系统类API 掌握数组基础算法 掌握数组工具类的使用 熟练掌握String类的API 熟练掌握StringBuil ...
- 产品经理10大基础技能(5):读透神经网络和机器学习
本篇先介绍许多热门的行业均在产生AI产品经理岗位的需求,再详细介绍AI产品经理必懂的AI技能,接着撰写什么是神经网络?什么是机器学习?最后用一个案例详细拆解AI产品经理如何用机器视觉识别手写字体的整体 ...
- 产品经理必懂的技术那点事儿 pdf_产品经理10大基础技能(5):读透神经网络和机器学习...
本篇先介绍许多热门的行业均在产生AI产品经理岗位的需求,再详细介绍AI产品经理必懂的AI技能,接着撰写什么是神经网络?什么是机器学习?最后用一个案例详细拆解AI产品经理如何用机器视觉识别手写字体的整体 ...
- sql统计表中各类型金额_产品经理市场需求旺盛的10大基础技能——第1篇读透SQL...
本篇灵感源自援引<经济学人>最近发表的一篇文章,预计2020年将成为AI技术全面成为主流的一年而起,先撰写比较火热的数据产品经理岗位,在数据产品经理岗位里有对产品经理必须要懂的技术SQL. ...
- cb32a_c++_STL_算法_查找算法_(5)adjacent_find
cb32a_c++_STL_算法_查找算法_(5)adjacent_find adjacent_find(b,e),b,begin(),e,end() adjacent_find(b,e,p),p-p ...
最新文章
- 深入理解C语言-二级指针三种内存模型
- centos 日志切割_CentOS下的日志切割
- synchronsized修饰方法的使用
- java.lang.Long cannot be cast to java.lang.Integer解决办法
- SAP Spartacus cxPageTemplateStyle Directive的作用
- 用treeview遍历文件夹(vb)
- RxJava学习总结
- 韦东山第3期嵌入式Linux项目-视频监控-2-从零写USB摄像头驱动(UVC驱动)
- 无法从服务器获取视频文件,视频从云服务器获取视频文件
- 【题解】【AcWing】1526. 洗牌机
- 最小二乘法拟合二次曲线 C语言
- 部署harbor服务器(https/http)
- Maltego 版本类型重新选择
- Python 使用 matplotlib绘制3D图形
- 轻量化中文版linux,MX Linux:一款专注于简洁性的中等体量发行版 | Linux 中国
- NLP文本提取中打标签列表和方案
- EVA(新世纪福音战士)经典语句
- html学习之路教程001
- [转]在 Azure 云服务上设计大规模服务的最佳实践
- python文件操作和异常之文件的操作