首页 > 代码库 > 78 无序数组的中位数
78 无序数组的中位数
【本文链接】
http://www.cnblogs.com/hellogiser/p/median-of-unsorted-array.html
【题目】
中位数即是排过序后的处于数组最中间的元素。 不考虑数组长度为偶数的情况。设集合元素个数为n。
【分析】
大体思路:
思路1) 排序法 n*lgn
把无序数组排好序,取出中间的元素
时间复杂度 采用普通的比较排序法 O(N*logN)
如果采用非比较的计数排序等方法, 时间复杂度 O(N), 空间复杂度也是O(N).
思路2) 数组或堆存储K个元素 k+(n-k)*k 或者 k+(n-k)*lgk
2.1)将前(n+1)/2个元素调整为一个小顶堆,
2.2)对后续的每一个元素,和堆顶比较,如果小于等于堆顶,丢弃之,取下一个元素。 如果大于堆顶,用该元素取代堆顶,调整堆,取下一元素。重复2.2步
2.3) 当遍历完所有元素之后,堆顶即是中位数。
思路3) 线性时间选择 n
参见http://www.cnblogs.com/hellogiser/p/kmin-of-array.html
【参考】
http://blog.csdn.net/zdl1016/article/details/4676882
78 无序数组的中位数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。