0 Daumen
671 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

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community