九章算法面试题74 中位数
2015-06-14 10:30
417 查看
九章算法官网-原文网址
http://www.jiuzhang.com/problem/75/
题目
给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。
在线测试本题
http://www.lintcode.com/zh-cn/problem/median/解答
这道题可以用快速选择一个类似快速排序的方法。如果数组长度为n,这道题求中位数实际上可以转化为求整个数组当中第(n+1)/2大的数,每次选择数组里面最左边的元素然后把数组里面比它大的放在数组它右边,比它小的放在左边,然后知道这个元素是在整个数组当中的第x大.如果x<(n+1)/2, 那么可以这个元素右边的数组里面找第(n+1)/2大,如果是x>(n+1)/2,那么在这个元素左边的数组里面找第(n+1)/2大。以此递归的查询。直到x 等于(n+1)/2 停止递归。我们采用这种方法的均摊时间复杂度为O(n).参考代码
http://www.jiuzhang.com/solutions/median/相关文章推荐
- 九章算法面试题73 翻转链表II
- 黑马程序员——Java语法基础(二)
- 面试时有哪些话是千万不能说的?
- 如何一周工作80-100小时还能拥有自己的生活?
- 黑马程序员——基础知识总结_static
- 作为一个程序开发者在职场中必须注意的7件事
- 黑马程序员------多线程创建的3种方式
- 黑马程序员---2015.6.13java基础笔记---构造代码块--this--static函数
- 黑马程序员—异常
- 请不要说自己是 Java 程序员
- 作为程序员必须要了解的位,字节,kb,mb,gb
- 总结过去10年的程序员生涯
- 黑马程序员---IO流-字符流
- 黑马程序员————java中的递归原理
- 黑马程序员——Java面向对象(二)之封装、继承、多态、接口等
- 黑马程序员---IO流-字节流
- Java冠军程序员
- 黑马程序员——java基础——IO流
- Android面试题总结
- Android面试题总结