2013-12-07 1 views
1

Я пытаюсь написать метод для вычисления режима массива. Я пытаюсь написать его только с двумя массивами. По какой-то причине, выход я получаю это размер массива -> 100. До сих пор это то, что у меня есть:Как написать метод для вычисления режима массива?

public static int mode(int[ ] grades) { 
    int mode[ ] = new int [101]; 
    int value = 0; 

    for (int i = 0; i < value; i++) 
    mode[grades[ i ] ]++; //this part really confuses me and I don't know how to interpret this. 
          //can someone please explain this to me too. I know this is the only... 
    int max = 0;    //...way to get it with 2 arrays. 

    for(int i = 0; i < 101; i++) { 
    max = mode[ i ]; 
    value = i; 
    } 

    return value; 
} 
+2

любезно объяснить свой вопрос в деталях, так что мы можем он LP Вас .. Я не получаю это. – TheLostMind

+0

Добро пожаловать в SO. Здесь возьмите [тур] (http://stackoverflow.com/about). –

ответ

1

сортов может быть в пределах [0,100], что 101 номера (отсюда размер из 101).

for (int i = 0; i < value; i++) 
    mode[grades[i]]++; 

grades[i] получает номер в слот i. Допустим, что это 85. Это дает нам: mode[85]++, которая увеличивает количество раз, мы уже видели сорт 85.

После завершения этого мы перебираем mode и посмотреть, что слот имеет наибольшее значение, это значение соглашается на режим, так как mode просто отслеживает количество раз, когда мы сталкиваемся с каждым счетом.

Однако вторая часть является неправильным, вы только хотите, чтобы обновить max, value если текущий элемент > max, то есть:

int max = 0;   
for(int i = 0; i< 101; i++) 
{ 
    if (mode[i] > max) 
    { 
     max = mode[i]; 
     value = i; 
    } 
}