0 Daumen
1,6k Aufrufe

Ich versuche mir gerade selbst einige komplizierte Aufgaben zu Algorithmen zu stellen.

Hat jemand eine Idee, wie man den Durchschnitt aller Komponenten eines 2-dimensionalen Arrays (array[][]) in einer Methode implementieren könnte?

Avatar von

1 Antwort

+1 Daumen

Hi,

spontan fällt mir da ein, alle werte zusammenzurechnen und durch die anzahl aller Werte zu teilen.

long counter = 0;
long sum = 0;
for (int[] arr : array)
for(int i : arr){
try{
counter += 1;
sum += i;
}
catch (OutOfyMemoryError e){
sum = long.MAX_VAL;
break;
//Alternativ hier abbrechen
}
}
}
double mittelwert = sum/counter;
System.out.println("Mittelwert: "+);

Beste Grüße

Felix

Avatar von

Dankee

Weißt du wie man von dem Algorithmus jetzt die Komplexität bestimmen kann?

Die Komplexität ist einfach:

Bei einem Array i[n][m] wäre es O(n*m). Vereinfacht gesagt ist das eine Laufzeit der Klasse O(n²).


Das bestimmt man so:

In Abhängigkeit der Elemente in dem Array dauert das Durchlaufen der for-Schleife genau n mal für die erste, und in jeder for Schleife nochmal m mal für die zweite Schleife.

Die Anweisungen in jeder for-Schleife und der Rest der Funktion hat die fixe Laufzeit 1, daher werden diese ignoriert.


Beste Grüße

Made by a lovely Community