Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
我们来看看中位数的定义吧!
简单定义:
一组资料的中位数是指将资料从小到大排序後,最中间的数。
详细定义(可略):
中位数(Median)
关於英文名称:
Medium 形容词 (是形容中等的;中间的)
Median 名词 (除了媒介之外,还有也有中间的意思)
见解:
关於中位数值观上来看就是最中间的数,
那生活上有甚麽应用呢?
1. 最近沸沸扬扬的美国总统大选(民调)
2. 计算全国人民的薪资水平
3. 算同班学生成绩
大多数人认知计算成绩、薪资 往往都使用平均法↓↓↓
如 1,2,3,4,5 之平均數与中位數都是 3。
至於对 1,2,3,4,500,平均數为 102。
那一特别大的數 500,让平均數增大不少,但中位數仍为 3,并不受 5 变成 500 之影响。
Q&A:
哪种方法好呢?
曾有学者指出 [统计只适合处理大量數据],试图以此消弭一些统计所可能引起的争议。
但这讲法并不正确,因即使很少量的數据,求平均數,也毫无问题。
因此统计绝非只适合处理大量數据。而有些民调被认为结果不可靠,关键也并不在於样本數的多寡。
这样說好了,以美国棒球大聯盟(MLB)球员的年薪來說,有报导說中位數是 470 万美元。
真的是这样吗?因实际收入可能包含绩效奖金等,且薪水涉及隐私,记者掌握的资料不見得都很可靠
由於原始數据便可能不精确,这时太在乎细节,就不是那麽必要。
因此是否真有一个中间位置,是否真能前後各切一半,何须太在意?
只要是一差不多在中间的值,让人对球员年薪落在那裡,能略有概念就行了。
方向:
解答有很多种实现方法,而中位数会发现几个特点:
* 中位数前面的数字与後面的数字一样多(在偶数元素情况下或相差1)
* 若某个数字前後的数字数量相同(或相差1)则为该数列的中位数
* 删除前N个元素与後N个元素後,中位数不变
* 从大阵列中按顺序任意取走n-1组元素,与剩下的元素共构成n个子列,
每个子列存在中位数:m1,m1...mn,min,max分别为其中最小者与最大者,
则原数列的中位数m满足:min<=m<=max
今天用较为简单的方法处理
1.先将排序好的阵列合并(类似气泡搜寻)
2.在判断奇数或偶数
中位数会有两种情况
* 当输入阵列的个数是奇数时,就取最中间的那个;
* 当输入的数目是偶数时,则要取最中间的那两个加总除以二。
程序码如下
public class Solution {
public double FindMedianSortedArrays(int[] nums1, int[] nums2) {
var list1 = new List<int>(nums1);
var list2 = new List<int> (nums2);
var mergedList= list1.Concat(list2).ToList();
mergedList.Sort();
if(mergedList.Count() % 2 == 0)
{
int minIndex = mergedList.Count()/2;
double i = (mergedList[minIndex-1] + mergedList[minIndex])/2.0 ;
return i;
}
else
{
int minIndex = mergedList.Count()/2;
return mergedList[minIndex];
}
return 0;
}
}
>>: 数字认证(Digital Authentication)
rdt3.0 rdt3.0 开始考虑到packet loss的情形,它怎麽解决呢? 喔喔~原来是采用...
程序码导读 点开我们的main.c档案,可以看到里面密密麻麻的注解,第一次看到还真令人害怕,但其实他...
在上一篇中我们已经把elk的环境设定完成,接下来将要收集log到Elasticsearch内,以方便...
大家好我是乌木白,今天来和大家介绍如何使用Git,今天的内容会稍微多一点,请大家要多复习喔!! 全...
继第22篇已经可以绑定fragment跟viewpager那我们就在fragment中加入一些东西吧...