Modalwerte berechnen ohne Importe

S

Sansiba007

Hallo Leute,

ich solle den Modalwert eines Arrays berechnen. Also also als Input wäre z.B. int a[] ={ 1,5,-4,1,1,1,-4,-4,5,5} Als Ergebnis soll logischerweise 1 erscheinen.

Leider ist das ohne Importe, für mich ein bisschen schwierig. Hier ist mal ein Versuch von mir:
Code:
    static int breite(int[] a) {
        int count = 1;

        int x = 0;
        int mod = 0;
        for (int j = 1; j < a.length; j++) {
            count=0;
            for (int i = 1; i < a.length; i++) {
                if (a[x] == a[i]) {
                    count += 1;
                    System.out.println(count);
                }
                if (mod < count) {
                   mod = count;
            }
                  
            }
            
            a[x] = a[x + 1];

        }
        return mod;
    }

    public static void main(String[] args) {

        int a[] = {3, 12, 12, 5, 5, 0, -3, 0, 5, -5, 12};
        System.out.println(breite(a));
    }
}

Hat jemand, wie ich das Programm zum laufen bringe? Oder ist der gesamte Ansatz falsch?
 
Habe kurz Modalwert nachgeschlagen: http://de.wikipedia.org/wiki/Modus_(Statistik)
Code:
Der Modus oder Modalwert ist der häufigste Wert einer Häufigkeitsverteilung.

Um diesen für eine Menge an Werten zu berechnen müsste man die Häufigkeit jedes vorkommenden Wertes bestimmen. Du lieferst in der Funktion die Häufigkeit und nicht den den Wert, der die grösste Häuftigkeit hat, zurück.

- über das Quellfeld iterieren und in einem temporären Feld die Häufigkeit des aktuellen Elementes ermitteln.
Das Element mit der grössten Häufigkeit mit seiner Häufigkeit speichern.

In deinem Beispiel müsste der Modalwert 12 sein und nicht 3 (12 und 5 kommen gleich oft vor, da kann man diskutieren ob es einen Modalwert gibt).
Arrays in Java starten mit Index 0.

Die Prüfung ob es einen neuen Höchstwert gibt kommt nach der inneren Schleife, nicht darin.

vgl:
Java:
	static int breite(int[] a) {
		int count = 0;
		int mod = 0;
		int modCount = 0;
		for (int j = 0; j < a.length; j++) {
			count = 0;
			for (int i = 0; i < a.length; i++) {
				if (a[j] == a[i]) {
					count += 1;
				}
			}
			if (modCount < count) {
				mod = a[j];
				modCount = count;
			}
		}
		return mod;
	}

	public static void main(String[] args) {
		int a[] = { 3, 12, 12, 5, 5, 0, -3, 0, 5, -5, 12 };
		System.out.println(breite(a));
	}
 
Zurück