众数问题

问题描述:

给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。 ★算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。★数据输入:输入数据由文件名为input.txt的文本文件提供。文件的第1行为多重集S中的元素个数n;在接下来的n行中,每行有一个自然数。 ★结果输出: 将计算结果输出到文件output.txt。输出文件有2行,第一行是众数,第2行是重数

源程序:

#include<stdio.h>
int main() {
       intn,i;
       scanf("%d",&n);
       inta[n]= {0};
       for(i=0;i<n; i++)
              scanf("%d",&a[i]);
       for(inti=0; i<n; i++)
              for(intj=0; j<n-i-1; j++) {
                     if(a[j]>a[j+1]){
                            intswap=a[j];
                            a[j]=a[j+1];
                            a[j+1]=swap;
                     }
              }
       intflag=a[0];
       intmax=1,maxA;
       intnum=1;
       for(i=1;i<n; i++) {
              if(flag==a[i]){
                     ++num;
                     if(num>max){
                            max=num;
                            maxA=a[i];
                     }
              }else {
                     flag=a[i];
              }
       }
       printf("众数:%d重数:%d\n",maxA,max);
       return0;
}



 

网络代码:

#include <stdio.h>
int main() {
       inti,j,Count=0,index=0,nCount=0;
       intn;
       scanf("%d",&n);
       inta[n];
       for(i=0;i<n; i++) {
              scanf("%d",&a[i]);
       }
       for(i=0;i<n; i++) {
              for(j=0;j<n; j++) {
                     if(a[j]==a[i])
                            nCount++;
              }
              if(nCount>Count){
                     Count=nCount;
                     index=i;
              }
              nCount=0;
       }
       printf("%d\n%d",a[index],Count);
}



 

posted @ 2016-10-09 22:16  Joe.Smith  阅读(521)  评论(0编辑  收藏  举报