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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在O(N)时间内求一个无序数组的中位数相关的知识,希望对你有一定的参考价值。

关键是在O(N)时间复杂度内,要求一个无序数组里的中位数,求助!!!

用改进的快排吧,每次看选定的标定数是在左半还是右半,然后根据要求对剩下的进行排序,比如说一共10个数,第一次标定的数排在了第3位,那么你只要拍剩3右边的数就好了,中位数肯定在右边,这个理论上的期望是o(n),或者用桶排序,排序复杂度就是o(n);再找出中位数就好了。 参考技术A 可以先在O(N)内排序,然后用中位索引取值,计数排序就是O(N)的,用这个就成。

以上是关于怎么在O(N)时间内求一个无序数组的中位数的主要内容,如果未能解决你的问题,请参考以下文章

无序数组寻找中位数

在O(n)时间复杂度内求无序数组中任意两个元素的最大差值,以及存在的组数

中位数: 给定一个未排序的整数数组,找到其中位数。

无序数组的中位数

求中位数,O(n)的java实现利用快速排序折半查找中位数

无序数组取中位数