C语言 如何编个程序求一组数的中位数和众数

C语言 如何编个程序求一组数的中位数和众数,第1张

数组排序可以不用指针。你把数组定义成全局变量,比如说a[10001];然后调用我给你的快排程序就行了,这个程序可以背下来,很有用的。

void qs(int L,int R)

{

int i=L,j=R,mid=a[(L+R)/2],t;

while(i<j)

{

while(a[i]<mid) ++i;

while(a[j]>mid) --j;

if(i<=j)

{

t=a[i]; a[i]=a[j]; a[j]=t;

++i; --j;

}

}

if(i<R) qs(i,R);

if(L<j) qs(L,j);

}

排好序之后找中位数就好办了。

至于众数,我觉得最好的方法是用bfs。但这个对你来说难度有点大,我就给你写一个hash表吧。还用上面的那个数组,且假定数组a中的最大值不超过10000,若超过,你把下面这个hash数组的范围扩大就行了。

另外,设a中有n个元素,a从1开始计数(若从0开始,你改一下就好了)

int hash[10001]={0};

int i,Max=0;

for(i=1; i<=n; ++i)

{

++hash[a[i]];

if(hash[a[i]]>hash[Max]) Max=a[i];

}

最后输出Max就好了

刚t415422663倒是提醒我了,如果要判断众数有多个,我可以把上面的程序稍改一下

int hash[10001]={0};

int i,Max=-1;/注意,这里把Max赋值为-1是为了防止数组a的元素个数为0时所有数据都被输出/

for(i=1; i<=n; ++i)

{

++hash[a[i]];

if(hash[a[i]]>Max]) Max=hash[a[i]];

}

//10000是数组a中可能出现的最大值,这个你可以自己改的

for(i=1; i<=10000; ++i)

if(hash[i]==Max) printf("%d\n",i);

此题的中位数算法应该是将数据从小到大重新排列。n

是样本数

这里样本数为30是偶数

则样本中位数m=1/2(x(15)+x(15+1)

这里就是m=1/2x(30/2)+x(30/2+1)

其中x后面小括号的是下标。我从这上面表示不出来。于是结果就是m=1/2(18+18)=18

明白了么?

中位数的计算主要是排序,然后根据样本数量是奇数还是偶数,确定公式代入公式找到中位数就可以了

把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数。

如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。示例如下:找出这组数据:23、29、20、32、23、21、33、25的中位数。解:首先将该组数据进行排列(这里按从小到大的顺序),得到:20、21、23、23、25、29、32、33因为该组数据一共由8个数据组成,即n为偶数,故按中位数的计算方法,得到中位数24,即第四个数和第五个数的平均数。

把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数。

如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。示例如下:找出这组数据:23、29、20、32、23、21、33、25的中位数。解:首先将该组数据进行排列(这里按从小到大的顺序),得到:20、21、23、23、25、29、32、33因为该组数据一共由8个数据组成,即n为偶数,故按中位数的计算方法,得到中位数24,即第四个数和第五个数的平均数。

把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数。

如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。示例如下:找出这组数据:23、29、20、32、23、21、33、25的中位数。解:首先将该组数据进行排列(这里按从小到大的顺序),得到:20、21、23、23、25、29、32、33因为该组数据一共由8个数据组成,即n为偶数,故按中位数的计算方法,得到中位数24,即第四个数和第五个数的平均数。

把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数。

如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。示例如下:找出这组数据:23、29、20、32、23、21、33、25的中位数。解:首先将该组数据进行排列(这里按从小到大的顺序),得到:20、21、23、23、25、29、32、33因为该组数据一共由8个数据组成,即n为偶数,故按中位数的计算方法,得到中位数24,即第四个数和第五个数的平均数。

以上就是关于C语言 如何编个程序求一组数的中位数和众数全部的内容,包括:C语言 如何编个程序求一组数的中位数和众数、中位数算法、中位数是什么怎么求等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10106187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存