方法一:如果相同的数是连续出现
从第一个数开始,与它后面的数比较,如果相同,计算+1,如果不等,计数置为1.同时保持此时的计数次数和此时的元素;
#include<stdio.h>
int Search(int a[],int len)
{
int max=0;//保持到目前为此出现次数最多的那个数
int count=1;
int maxnum=count;//保存最大计数次
int maxd;
for(int i=0;i<len-1;i++)
{
max=a[i];
if(a[i+1]==max)
count++;
else
count=1;
if(count>maxnum)
{
maxnum=count;
maxd=max;
}
}
return maxd;
}
int main()
{
int array[]={1,1,1,2,2,4,4,4,4,5,5,6,6,6,6,6};
int lens=sizeof(array)/sizeof(array[0]);
int num=Search(array,lens);
printf("%d\n",num);
return 0;
}
方法二:数组中的数随机排列
#include<iostream>
#include<map>
using namespace std;
bool findMostFrequentInArray(int *a,int size,int &val)
{
if(size==0)
return false;
map<int,int> m;
for(int i=0;i<size;i++)
{
if(++m[a[i]]>=m[val])
val=a[i];
}
return true;
}
int main()
{
int a[]={1,1,2,2,4,4,4,4,5,5,6,6};
int val=0;
if(findMostFrequentInArray(a,12,val))
cout<<val<<endl;
int b[]={1,5,4,3,4,4,5,4,5,5,6};
if(findMostFrequentInArray(b,12,val))
cout<<val<<endl;
int c[]={1,5,4,3,4,4,5,4,5,5,6,6,6,6,6};
if(findMostFrequentInArray(c,15,val))
cout<<val<<endl;
return 0;
}