Arrays min- maxWerte bestimmen


Fkglr

Grünschnabel
Hallo Liebe Programmier Community,

ich habe von der Uni die Aufgabe bekommen, eine Methode zu schreiben, die den kleinsten und größten Wert, sowie den Durchschnittswert eines Arrays, der gefüllt ist mit Zufallszahlen, auszugeben. Jetzt hab ich es mit folgendem Code probiert:


Java:
public static int minWert (int[] zahlen) {

        int minArray = 0;
      
        for (int i = 0; i < zahlen.length - 1; i++) {
            if ( zahlen[I][I] < zahlen[i+1] ) {
                minArray = zahlen[I];
            }
            else {
                minArray = zahlen[i+1];
            }
        }
        return minArray;
    }



Allerdings bekomme ich als return-Wert immer nur eine 0 raus.
Für den maxWert hab ich den gleichen Code, nur mit anderen Operatoren natürlich, benutzt. Wo liegt der Fehler?
Danke im vorraus

MfG[/I][/I][/I]
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

n/a
Moderator
Was ist I in zahlen [I][I]?

Kannst du nicht einfach das folgende machen?
Java:
        int minArray = zahlen[0];
        for (int i = 0; i < zahlen.length - 1; i++) {
            if (zahlen[i] < minArray) minArray = zahlen[i];
        }
 

Zvoni

Erfahrenes Mitglied
Hab zwar keine Ahnung von Java, aber.....
Wieso nicht einfach das Array an eine Sortier-Routine schicken (Quicksort/BubbleSort?)?
Als Abfall-Produkt bekommst du automatisch den kleinsten und grössten Wert (erstes bzw. letztes Element des Arrays), danach einmal durch das Array rennen, die Werte aufaddieren, zum Schluss durch Anzahl Elemente teilen.

EDIT: Ohne Sortier-Routine würde ich wie folgt vorgehen:
1) Reservier dir drei Variablen (min, max und summe), und initialisiere alle mit dem ersten Element des Arrays!!
(ist übrigens im Beispiel von Yaslaw)
2) laufe durch das Array, beginnend ab dem zweiten Element, und mache folgendes:
a) vergleiche aktuelles Element mit min. Falls kleiner setze min auf aktuelles Element (ist übrigens das Beispiel von Yaslaw)
b) vergleiche aktuelles Element mit max. Falls grösser setze max auf aktuelles Element
c) bilde die summe mit dem aktuellen Element (summe=summe+Array[aktuell])
3) Nach Ende der Schleife mache Summe geteilt durch Anzahl Elemente --> ergibt Durchschnitt, in min steht der kleinste wert, in max der grösste
 
Zuletzt bearbeitet:

Fkglr

Grünschnabel
Danke für eure hilfreichen Antworten! Hab's dann mit viel ausprobieren und unter Berücksichtigung eurer Tipps zum laufen gebracht!! :))
 

Zvoni

Erfahrenes Mitglied
Weil vergleichsbasiertes Sortieren immer Ω(n log n) ist und Minimum/Maximumbestimmung immer in θ(n) geht.
Weiss ich, aber für nen Anfänger wäre das, zumindest meiner Meinung nach, der erste Anlauf was Algorythmen-Entwicklung betrifft.
Die Optimierung etc. sind dann der zweite Schritt (siehe auch mein EDIT in welchem ich dann auf ein Sortieren verzichte)