当前位置:编程学习 > 网站相关 >>

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

/*
    问题: 
    在一个由自然数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;
}
运行结果为:
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,