寻找中位数(分治法)
2015-09-28 09:31
169 查看
对于非排序数列寻找中位数
方法I:median of median algorithm
方法II:利用QuickSort,二分法,每次剪枝操作
方法I:median of median algorithm
function medianOfMedians(list, left, right) numMedians = ceil((right - left) / 5) //每个子数组有5个元素,numMedians是子数组的数量 for i from 0 to numMedians //顺序处理每个子数组 subLeft := left + i*5 subRight := subLeft + 4 if (subRight > right) subRight := right // selectIdx是寻找子数组中位数的一个算法 medianIdx := selectIdx(list, subLeft, subRight, (subRight - subLeft) / 2) swap list[left+i] and list[medianIdx] //把子数组的中位数移到list的开头 return selectIdx(list, left, left + numMedians - 1, numMedians / 2) //计算中位数的中位数
方法II:利用QuickSort,二分法,每次剪枝操作
相关文章推荐
- linux启动过程图解
- OpenGL3.0教程 第一课:新建一个窗口
- Mac OS X 下的JDK路径
- java的23种模式
- IntelliJ IDEA于Make Project时报:子字符串不是票面金额的结束、非法的表达式显示启动
- CSS属性小结之--半透明处理
- ThinkPHP数据操作方法总结
- 移动端HTML5<video>视频播放优化实践
- WMware虚拟机中无法连接到网络可能的原因
- UnrealScript语言基础
- 将登录等信息保存到session中和退出session
- 数据挖掘中所需的概率论与数理统计知识、上
- logshell 读取流程
- sap apo 软件的架构和设计分析
- Linux下的tar压缩解压缩命令详解
- 【Visual C++ 2010】Unicode和ANSI的一些注意事项
- 什么是静态面向对象语言,什么是动态面向对象语言?什么是编译型语言,什么是解释型语言?
- eclipse 启动时异常处理
- mysql主从原理图解
- 大白话解析模拟退火算法