算法不难,就是用个变量分别存储已经遍历到的元素中,出现次数最多的元素和次数。在遍历过程中统计目前遍历的元素的次数,在遍历到的元素变化时,把上个元素次数和之前存储的最大次数比较,保留最大的次数和对应的元素。注意最后一个元素需要单独比较。本算法只针对已经排序好的数组。Java实现如下:
public class TestAndDel {
static void findmost(int[] array){
Arrays.sort(array);
int lastEle=array[0];
int maxTime=0;
int presentTime=1;
int maxEle=array[0];
for(int i=1;i<array.length;i++)
{
if(array[i]==lastEle)
presentTime++;
else
{
if(presentTime>maxTime)
{
maxTime=presentTime;
maxEle=lastEle;
}
lastEle=array[i];
presentTime=1;
}
if(i==array.length-1 && presentTime>maxTime)// 考虑到比较到最大的元素(排在最后的元素),需要在循环推出前比较一次
{
maxTime=presentTime;
maxEle=lastEle;
}
}
System.out.println("出现次数最多的元素"+maxEle+" "+"出现的次数"+maxTime);
}
public static void main(String args[]) {
int[] array= {1,2,4,4,1,9,2,2,7,4,2,4,2,9,9,9,9,0,9,4};
TestAndDel.findmost(array);
}
}