找出数组里面元素出现次数最多的有关问题

找出数组里面元素出现次数最多的问题

/*
    问题:
    在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。
    设计一个算法,找出出现次数最多的数字。
*/

<代码示例>

 

#include<stdio.h>

void search(int a[],int len)
{
      int i,index,max = 0;
      int temp[1000] = {0};  //定义一个大小为1000个元素的数组,初值均设为0
      for(i = 0; i < len; i++)
      {
              index = a[i] - 1;
              temp[index]++;  //哪个元素出现的最多,导致temp[index]值最大
      }
      for(i = 0; i < 1000; i++) //遍历整个数组,找出值最大的元素
      {
              if(max < temp[i])
              {
                      max = temp[i];
              }
      }
      for(i = 0; i < 1000; i++) //遍历整个数组,输出值最大元素的下标的值加1
      {
              if(max == temp[i])
              {
                     printf("%d\n",i + 1);  //即元素出现次数最多的
              }
      }
}
int main()
{
      int array[ ] = {1,1,2,3,4,5,6,6,6,7,7,7,7,7,7};
      search(array,sizeof(array)/sizeof(*array));
      return 0;
}

运行结果为:

找出数组里面元素出现次数最多的有关问题