您的位置:首页 > 其它

众数问题

2017-05-25 19:08 155 查看

众数问题

所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。

现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。

#include <stdio.h>
#define N 100
int main()
{
int a[100];
int i,j;
int n,temp;
int max,count=1,x;
printf("请输入集合元素个数N:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

for(i=0;i<n-1;i++){//冒泡排序
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;}
}
}

for(i=0;i<n-1;i++)//众数  重数
{
if(a[i]==a[i+1])
{
count++;
if(max<count)
{
x=a[i];
max=count;
}
}
else
count=1;
}

printf("该集合的众数为:%d,重数为:%d\n",x,max);
return 0;
}

/*
思路:
输入集合元素后,首先进行排序,然后从排序后的元素进行判断比较,如果a[i]=a[i+1],计数count++,如果count比最大值max还要大,
则max=count,x记住此时的值a[i],循环到n-1结束。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: