Базовый, хотя и неэффективный алгоритм будет выглядеть примерно так:
static int modal( int[] values ) {
int modal = 0;
int mfreq = 0;
for( int i : values ) {
// Is this value the most frequent we've found so far?
int freq = 0;
for( int j : values ) {
if( j == i ) {
freq++;
}
}
if( freq > mfreq ) {
modal = i;
mfreq = freq;
}
return modal;
}
Вы могли бы сделать немного лучше, предварительно рассчитав частоты для каждого значения и сохранив их, возможно, на карте или в аналогичном формате, хотя для этого все равно потребуется циклическое изменение значений, а для определения того, какая из них имеет самую высокую частоту, потребуется еще один цикл. .