关于求数组元素众数的C算法,求大神解答!
下面的是我的程序。程序功能是求数组中99个元素的众数,这段程序运行正常,能够打印出该数组元素的众数。后来我发现了一个漏洞,就是如果该数组元素中存在多个众数的话,我这段程序只能找到其中的一个。我想了很久,没有想出怎么才能设计出能够输出过个众数情况的算法。
请各位大神指点!
Thank you in advance!
int array[99] = {6,7,8,9,8,7,8,9,8,9,7,8,9,5,9,8,7,8,7,8,6,7,8,9,3,9,8,7,8,7,7,8,9,8,9,8,9,7,8,9,6,7,8,7,8,7,9,8,9,2,7,8,9,8,9,8,9,7,5,3,
5,6,7,2,5,3,9,4,6,4,7,8,9,6,8,7,8,9,7,8,7,4,4,2,5,3,8,7,5,6,4,5,6,1,6,5,7,8,7};
int frequency[10] = {0};
int i, Current_ZhongShu = 1;
for(i=0;i<99;i++)
{
++frequency[array[i]];
}
for(i=2;i<10;i++)
{
if(frequency[Current_ZhongShu]<frequency[i])
{
Current_ZhongShu = i;
}
}
printf("The ZhongShu is: %d\n",Current_ZhongShu);