200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 找出一个数组中出现次数最多的那个元素

找出一个数组中出现次数最多的那个元素

时间:2021-09-18 09:33:32

相关推荐

找出一个数组中出现次数最多的那个元素

Description

找出一个数组中出现次数最多的那个元素

Input

多组输入,请处理到文件结束

每组第一行输入一个整数n(不大于20) 第二行输入n个整数

Output

找出n个整数中出现次数最多的那个整数,(数据保证答案唯一)。

Sample Input

4

1 2 2 3

Sample Output

2

#include<stdio.h>int main(){int n,i,j,k,t,m,a[25];while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;//先进行排序,按从小到大的顺序依次排列,排列须引入中间量t。 }}}t=a[0];m=1;k=1; //t记录当前出现次数最多的数,m记录t出现的次数,k记录当前数出现的次数,for(i=1;i<n;i++){if(a[i]!=a[i-1])//如果前后两数不相等了 {if(k>m)//只出现一遍则不会有k>m,由于m不断更新,值会变大,所以不一定会有k>m反复 {m=k;//如果k>m了,m变大,保证m是出现次数最多的数的次数 t=a[i-1];//m由k赋值,k代表的是a【i-1】 }k=1;//新的数字k重新变为1,再循环,不然k会一直变大,使得m也改变 }elsek++;//前后两数相等,k即次数增加}if(k>m)//循环最后进行更新,不然如果最后一项次数最多,无法输出最后一项 {m=k;t=a[i-1];}printf("%d\n",t);}return 0;}//先用了冒泡排序,然后默认第一个出现最多的数是第一个,t记录当前出现次数最多的数,m记录t出现的次数,k记录当前数出现的次数,当在当前数与前一个数不相等且k>m时方进行t与m的更新。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。