算法不难,就是用个变量分别存储已经遍历到的元素中,出现次数最多的元素和次数。在遍历过程中统计目前遍历的元素的次数,在遍历到的元素变化时,把上个元素次数和之前存储的最大次数比较,保留最大的次数和对应的元素。注意最后一个元素需要单独比较。本算法只针对已经排序好的数组。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);
}
}
本文介绍了一种简单的算法,用于找出已排序数组中出现次数最多的元素及其出现次数。该算法首先对数组进行排序,然后遍历数组并记录每个元素的出现次数,最终返回出现次数最多的元素。
208

被折叠的 条评论
为什么被折叠?



