当前位置:首页 » 编程语言 » 求众数c语言

求众数c语言

发布时间: 2022-07-22 02:43:16

‘壹’ c语言编程:众数

数组排序可以不用指针。你把数组定义成全局变量,比如说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]=;
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]=;
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);
你的串号我已经记下,采纳后我会帮你制作

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

数组排序可以不用指针。你把数组定义成全局变量,比如说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);

‘叁’ C语言求众数

#include<stdio.h>


int main()

{

int i,n,c,max=0,j,number;

int a[10];

scanf("%d",&n);

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

{

scanf("%d",&a[i]);

}

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

{

number=1;

for(j=0;j<n;j++)

{

if(a[j]==a[i])

{

number++;

}

if(max<number)

{

max=number;

c=a[i];

}

}

}

printf("该列数中众数为: %d ",c);

return 0;


}

‘肆’ 如何用c语言求众数

#include<stdio.h>

int main ()

{ int n,i,j,t,max=0,a[1000][2]={0};

scanf("%d",&n);

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

scanf("%d",&a[i][0]);

// printf("OK ");

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

for(j=0; j<n-1-i; j++)

if(a[j][0]>a[j+1][0])

{ t=a[j][0];

a[j][0]=a[j+1][0];

a[j+1][0]=t;

}

for(i=0; i<n;)

{ a[i][1]=1;

for(j=i+1; a[j][0]==a[i][0]; j++)

a[i][1]++;

if(a[i][1]>max)max=i;

i=j;

}

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

if(a[i][1]==a[max][1])

printf("%d ",a[i][0]);

return 0;

}

‘伍’ 用排序法排完序怎样求众数(C语言)

#include<stdio.h>

int mode(int a[],int n)

{ int k=1,i,j=0,max=1;

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

if(a[i]==a[i-1])

if(++k>max)

{ max=k;

j=i;

}

else k=1;

return a[j];

}

int main()

{ int a[]= {1,2,2,3,5,6,6,6,7,8,12};

printf("%d ",mode(a,11));

return 0;

}

‘陆’ C语言求众数问题

算法很多。大致思路如下:
定义数据范围:如0-100,
定义数组1:int a[101]//标保证任何数据都可以容纳,并且初始化为0。
定义数组2:int data[n] //待处理数组,自己初始化。
代码如下:
#include<stdio.h>
void main()
{
int a[101]={0};
int nMax = 0;
int data[50] = {1,3,4,2,13,4,2,1.....};//这个你自己初始化
for(int i=0;i<50;i++)
a[data[i]]++;
for(int n=0;n<101;n++)
{ if(nMax<a[n])

nMax = a[n];
}
for(int k=0;k<101;k++)
{
if(nMax == a[k])
printf("%4d,%4d\n",nMax,k);
}
}

‘柒’ C语言程序设计:求众数,中位数 重点看图,会采纳

这个很简单啊,设置数组报存随机生成的数,然后一个单循环求出各个数的重复次数。
或者选择排序,连续相等数最多的就是众数,中间那个数字就是中位数。

‘捌’ C语言编程,求众数

int
a[n],A[n];
不能这样定义的吧。。。
A[a[i]]++;
这句有问题!
若输入的a[i]大于n,则超出了A的下标范围
访问数组超范围的下标,就会Runtime
Error。。。

‘玖’ 用C语言找众数

1、先将数组a[N]排序(增序、降序都可以)

2、从a[i++]开始统计,若相等则计数器b[j++],如此重复。

3、在b[N]查找最大数max,并记录max在b[N]中的索引imax

4、设置标志flag = 1,若满足(b[i] == max && i != imax),则flag = 0

5、若falg = 0,返回-1,否则返回b[imax]

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

constintN=10;

voidSort(inta[],intn){
inti,j,k,t;
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(a[k]<a[j])k=j;
}
if(i!=k){
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
}

voidShow(inta[],intn){
inti;
for(i=0;i<n;++i)
printf("%d",a[i]);
printf(" ");
}

intmain(){
inti,m,flag,imax;
inta[N],b[N];
srand((unsigned)time(NULL));
for(i=0;i<N;++i)//生成数组元素序列
a[i]=rand()%(1*N);
Sort(a,N);
Show(a,N);
b[0]=1;
for(i=1,m=0;i<N;++i){//统计各种大小数的个数
if(a[i]==a[i-1])++b[m];
elseb[++m]=1;
}
++m;
imax=0;
for(i=1;i<m;++i){//查找"众数"的个数
if(b[i]>b[imax])
imax=i;
}
flag=1;
for(i=0;i<m&&flag;++i)//是否存在众数?
if(b[i]==b[imax]&&i!=imax)
flag=0;
printf("%d ",flag?b[imax]:-1);
return0;
}
热点内容
压缩内存软件 发布:2025-01-31 16:51:39 浏览:145
脚本lcd 发布:2025-01-31 16:41:02 浏览:515
安卓selinux干什么用的 发布:2025-01-31 16:32:04 浏览:531
侠盗猎车手加钱密码是多少 发布:2025-01-31 15:44:28 浏览:662
没密码怎么登微信 发布:2025-01-31 15:33:51 浏览:737
c语言死机程序 发布:2025-01-31 15:07:52 浏览:18
编程教育装修 发布:2025-01-31 15:04:38 浏览:402
函数和存储过程的区别 发布:2025-01-31 14:39:12 浏览:609
地下室柱子箍筋的加密 发布:2025-01-31 14:36:11 浏览:934
手机拍摄视频在哪个文件夹 发布:2025-01-31 14:34:28 浏览:761