找出数组里面元素出现次数最多的问题
/*
问题:
在一个由自然数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;
}
运行结果为:
补充:综合编程 , 其他综合 ,