您的位置:首页 > 职场人生

九章算法面试题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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: