Algorytm do trybu obliczeniowego
Próbuję opracować algorytm w postaci funkcji, która akceptuje dwa parametry, tablicę i rozmiar tablicy. Chcę, aby zwrócił tryb tablicy i jeśli istnieje wiele trybów, zwróć ich średnią. Moja strategia polegała na tym, aby wziąć tablicę i najpierw ją posortować. Następnie policz wszystkie wystąpienia liczby. podczas gdy ta liczba występuje, dodaj tę, aby liczyć i zapisać tę liczbę w tablicy m. Więc m trzyma wszystkie zliczenia, a inna tablica q trzyma ostatnią wartość, którą porównujemy.
Na przykład: czy moja lista jest{1, 1, 1, 1, 2, 2, 2}
wtedy bym miałm[0] = 4 q[0] = 1 and then m[1] = 3 and q[1] = 2.
więc tryb jestq[0] = 1;
niestety do tej pory nie odniosłem sukcesu. mając nadzieję, że ktoś może pomóc.
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;
}
}