(多个数的)数中位数怎么求

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 13:48:26
(多个数的)数中位数怎么求(多个数的)数中位数怎么求(多个数的)数中位数怎么求将所有数从大到小排列,如果有奇数(2n+1)个数,则最中间的数[第(n+1)个]即是中位数如果有偶数(2n)个数,则取最中

(多个数的)数中位数怎么求
(多个数的)数中位数怎么求

(多个数的)数中位数怎么求
将所有数从大到小排列,
如果有奇数(2n+1)个数,则最中间的数[第(n+1)个]即是中位数
如果有偶数(2n)个数,则取最中间的两数[第n个和第(n+1)个]的平均数为其中位数

。。。从两边数

我之前回答过这个问题,我再来粘一下。
如果是小规模数据的话直接用排序实现就可以,差一点的算法是n^2的复杂度,好一点的nlogn。
大规模的数据的话采用下面的方法:
实数的排序算法复杂度是O(nlogn),这个中位数可以做到O(n)
下面我来说明这个算法的过程。
算法是基于归并排序(merge-sort)的更改。
把中位数更改为等价的叙述。无序的n个...

全部展开

我之前回答过这个问题,我再来粘一下。
如果是小规模数据的话直接用排序实现就可以,差一点的算法是n^2的复杂度,好一点的nlogn。
大规模的数据的话采用下面的方法:
实数的排序算法复杂度是O(nlogn),这个中位数可以做到O(n)
下面我来说明这个算法的过程。
算法是基于归并排序(merge-sort)的更改。
把中位数更改为等价的叙述。无序的n个数中的第int(n/2)大的元素。(k=int(n/2))
1.随机化数据,这样可以保证因为输出时候的对称性(可能的顺序输入)而造成的算法退化。
for (int i=number.count;i>=0;i--)
swap(number[i],number[random(0,i-1)]);//swap,交换,random,0,k闭区间的随机数。
2.归并排序主过程。
mergesort(a,b,k)//寻找number数组中从下标a到下标b的元素中的第k大的元素。
{
t=number[a];
把这a,b中的元素从排,使a~p-1的元素比t小,p+1~b的元素比t大。number[p]=t;//O(n),这步你构造吧。不是很困难,伪代码不写太多。
//此时比t小元素有p-1-a+1=p-a个,
//分情况,如果k=p-a+1,返回t
//如果k>p-a+1,返回mergesort(p+1,b,k-(p-a+1))
//如果k}
以上算法T(n)=T(n/2)+O(n)
根据主定理,T(n)=O(n)。
小学的???我靠。。。小学的就简单了。把所有的数从小到大排序,如果是奇数个数字,就取最中间的,偶数个的话取最中间的两个的平均数。

收起

就是先从大到小(或从小到大)排列,取中间的一个或者中间的两个之和除以2.
这个应该是(65+78)/2=71.5

把一组数据按从小到大的数序排列,在中间的一个数字(或两个数字的平均值)叫做这组数据的中位数。
中位数的算法:求中位数时,首先要先排序(从小到大),然后计算中位数的序号,分数据为奇数个与偶数个两种来求.
中位数算出来可避免极端数据,代表着数据总体的中等情况。
如果总数个数是奇数的话,按从小到大的顺序,取中间的那个数
如果总数个数是偶数个的话,按从小...

全部展开

把一组数据按从小到大的数序排列,在中间的一个数字(或两个数字的平均值)叫做这组数据的中位数。
中位数的算法:求中位数时,首先要先排序(从小到大),然后计算中位数的序号,分数据为奇数个与偶数个两种来求.
中位数算出来可避免极端数据,代表着数据总体的中等情况。
如果总数个数是奇数的话,按从小到大的顺序,取中间的那个数
如果总数个数是偶数个的话,按从小到大的顺序,取中间那两个数的平均数

收起