Алгоритм вычисления режима

Я пытаюсь разработать алгоритм в виде функции, которая принимает два параметра: массив и размер массива. Я хочу, чтобы он возвращал режим массива и, если есть несколько режимов, возвращает их среднее значение. Моя стратегия состояла в том, чтобы взять массив и сначала отсортировать его. Затем посчитайте все вхождения числа. пока происходит это число, добавьте его к счетчику и сохраните это количество в массиве m. Таким образом, m содержит все значения, а другой массив q содержит последнее значение, которое мы сравнивали.

Например: мой список{1, 1, 1, 1, 2, 2, 2} тогда я быm[0] = 4 q[0] = 1 and then m[1] = 3 and q[1] = 2.

так что режимq[0] = 1;

к сожалению, я до сих пор не добился успеха. надеясь, что кто-то может помочь.

float mode(int x[],int n)
{
    //Copy array and sort it
    int y[n], temp, k = 0, counter = 0, m[n], q[n];

    for(int i = 0; i < n; i++)
        y[i] = x[i];

    for(int pass = 0; pass < n - 1; pass++)
        for(int pos = 0; pos < n; pos++)
            if(y[pass] > y[pos]) {
                temp = y[pass];
                y[pass] = y[pos];
                y[pos] = temp;
            }

    for(int i = 0; i < n;){
        for(int j = 0; j < n; j++){
            while(y[i] == y[j]) {
                counter++;
                i++;
            }
        }
        m[k] = counter;
        q[k] = y[i];
        i--; //i should be 1 less since it is referring to an array subscript
        k++;
        counter = 0;
    }

}

Ответы на вопрос(4)

Ваш ответ на вопрос