寻找众数题解

#include<stdio.h>
int main()
{
int a[1001],i,j,n,num,num_max, count, count_max=0;
scanf("%d",&n);
for(i=0;i<n; i++)
scanf("%d",&a[i]);//先将要寻找的n个数通过循环输入进去
for(i=0;i<n;i++)//定义一个循环,从左往右每次拿出一个数a[i]
{
count=0;//count用于记录本次a[i]出现的次数,每次循环开始的a[i]出现的次数要从0开始算;
num = a[i];//num用来存放本次a[i]的值
  for(j=0;j<n;j++)//定义第二个循环,目的是与本次拿出来的a[i]比较,相等的话count++记录出现了几次a[i]
  {
    if(a[j] == num)

//将数组中的每个数与本次拿出来的a[i]比较,相等就让count+1,可以记录数组中一共出现了多少次a[i],(也可以将上面j=0改成j=i,这样就是从i开始往后遍历,因为前面的数已经比过了不会影响,因为如果这次的a[i]后面有众数的话,如过这个数在本次a[i]之前出现过,那么那次它就已经被记录为众数了,如果没出现过,那么每个它都是在i或者i之后的,所以从i开始便历也不会少记录它出现的值,不影响众数的寻找,这里看不懂就算了)
    count++;
  }
  if(count_max <count)

//如果本次a[i]出现的次数大于之前出现最多的,那么这个数就是当前众数,将本次的次数赋值给count max,可以求出当前众数出现的次数,直到比完所有的数之后,那么那次的count max的值就是整个数组的众数出现的次数,num max就是整个数组的众数。

  {
    count_max = count;
    num_max = num;//
  }
}
printf("%d %d",num_max ,count_max);
return 0;
}

posted @ 2021-11-17 19:34  ganl啦  阅读(47)  评论(0)    收藏  举报