怎么在O(N)时间内求一个无序数组的中位数

关键是在O(N)时间复杂度内,要求一个无序数组里的中位数,求助!!!... 关键是在O(N)时间复杂度内,要求一个无序数组里的中位数,求助!!! 展开
 我来答
权群0j95e2
2010-04-27 · TA获得超过498个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:351万
展开全部
用改进的快排吧,每次看选定的标定数是在左半还是右半,然后根据要求对剩下的进行排序,比如说一共10个数,第一次标定的数排在了第3位,那么你只要拍剩3右边的数就好了,中位数肯定在右边,这个理论上的期望是o(n),或者用桶排序,排序复杂度就是o(n);再找出中位数就好了。
alex348
2010-04-27 · TA获得超过244个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:248万
展开全部
可以先在O(N)内排序,然后用中位索引取值,计数排序就是O(N)的,用这个就成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式