Algorithmus zum Berechnen des Modus

Ich versuche, einen Algorithmus in Form einer Funktion zu entwickeln, die zwei Parameter akzeptiert, ein Array und die Größe des Arrays. Ich möchte, dass es den Modus des Arrays zurückgibt und wenn es mehrere Modi gibt, den Durchschnitt. Meine Strategie war es, das Array zu nehmen und es zuerst zu sortieren. Zählen Sie dann alle Vorkommen einer Zahl. Während diese Zahl auftritt, addiere eine Zahl zu counter und speichere diese Zahl in einem Array m. Also hält m alle Zählungen und ein anderes Array q hält den letzten Wert, den wir verglichen haben.

Zum Beispiel: ist meine Liste ist{1, 1, 1, 1, 2, 2, 2} dann hätte ichm[0] = 4 q[0] = 1 and then m[1] = 3 and q[1] = 2.

so ist der Modusq[0] = 1;

leider habe ich bisher keinen erfolg gehabt. Ich hoffe, jemand könnte helfen.

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;
    }

}