1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

gesucht ist das Maxiumum eines Arrays

  • luckypausch
  • 5. Mai 2017 um 16:58
  • Unerledigt
  • luckypausch
    2
    luckypausch
    Mitglied
    Punkte
    15
    Beiträge
    2
    • 5. Mai 2017 um 16:58
    • #1

    Ich bin blutiger Beginner. Daher seid bitte gnädig mit mir =)

    Angabe:

    Zitat


    Gegeben ist ein Array mit ganzzahligen Werten, das eine konkave Funktion
    darstellt, d.h., das Array besteht aus zunächst aufsteigenden, gefolgt von
    absteigenden Werten. Es können auch gleiche Werte auftreten!
    Zwei Beispiele für „konkave“ Arrays:
    Array [1,2,2,4,5,5,6,4,4,3,2,1]
    Array [4,5,6,7,8,7,6,5,4]
    Schreiben Sie eine Methode, die auf effiziente Weise den Maximalwert
    des Arrays berechnet, also sofort die Berechnung abbricht, sobald das
    Maximum gefunden ist.
    Vorgabe:
    public class Beispiel {
    // effiziente Implementierung laut Angabe
    public int berechneMax(int[] werte) {
    // hier soll Ihre Implementierung stehen
    }
    }

    Alles anzeigen

    Hier ist mein aktueller Code:

    Zitat

    public class Beispiel {
    public static void main(String[]args){

    int [] werte = new int [] {1,2,2,4,5,5,6,4,4,3,2,1};
    }
    public int berechneMax(int[] werte) {
    int max = 0;

    for (int i = 0; i<werte.length; i++){
    if (werte[i]>max){
    max = werte[i];
    }

    System.out.println(max);
    }
    return max;
    }
    }

    Alles anzeigen

    Ich habe folgendes Problem:
    Ich möchte über die Main Methode die max Methode aufrufen allerdings habe ich keine Ahnung wie ich das hinbekomme. =(

    ich hätte jetzt einfach mal auf

    Zitat

    werte.berechneMax(int[] werte);

    getippt allerdings klappt das so nicht...
    bin für jeden eurer Tipps dankbar.

    lg

  • mtoman
    13
    mtoman
    Mitglied
    Reaktionen
    47
    Punkte
    1.767
    Beiträge
    331
    • 6. Mai 2017 um 00:25
    • #2

    Der Aufruf sollte eher so aussehen (so gut das am handy jetzt klappt) :
    Beispiel bsp = new Beispiel() ;
    bsp.berechneMax(werte);

    Tipp bezüglich der konkaven Funktion: sobald der aktuelle Wert kleiner als der vorherige ist, kann beendet werden (da die Funktion ab diesem Zeitpunkt nur noch fallend sein sollte). Dann kannst du dir auch das existierende If sparen, da der vorherige Wert sicher >= alle Vorgänger ist.

  • luckypausch
    2
    luckypausch
    Mitglied
    Punkte
    15
    Beiträge
    2
    • 7. Mai 2017 um 11:55
    • #3

    Danke für deine Tipps auf ersten hätte ich auch selbst draufkommen müssen.
    Stand da wohl ziemlich auf der Leitung.

    zu deinem Tipp bezüglich der konkaven Zahlen hätte ich nur als Lösung eine else break Anweisung hinzugefügt. somit wird die Schleife abgebrochen sobald eine niedrigere Zahl entdeckt wird. wie ich das ganze jedoch ohne die if-Schleife schaffe weiß ich leider nicht. Wie würde dein Lösungsansatz aussehen?

    hier mein Code:

    Zitat


    public class Beispiel {

    public int berechneMax(int[] werte) {
    int max = 0;

    for (int i = 0; i<werte.length; i++){
    if (werte[i]>=max){
    max = werte[i];
    } else break;
    }
    System.out.println(max);
    return max;
    }

    public static void main(String[]args){

    int [] werte = new int [] {1,2,2,4,5,5,6,4,4,3,2,1,99};

    Beispiel eins = new Beispiel();
    eins.berechneMax(werte);
    }
    }

    Alles anzeigen
  • mtoman
    13
    mtoman
    Mitglied
    Reaktionen
    47
    Punkte
    1.767
    Beiträge
    331
    • 8. Mai 2017 um 14:08
    • #4

    Ich meinte eh nicht, dass du das "if" ganz loswerden wirst können, sondern nur das obenstehende (und stattdessen das if für das break hinzufügen).
    Kommt aber jetzt mit der Lösung aufs Selbe.

    Andere Variante wäre sich das "max" zu sparen, werte[i] mit werte[i+1] zu vergleichen (entsprechend loop boundaries beachten) und dann einfach direkt return werte[i].
    Aber das sind dann Spielereien :)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • java
  • array
  • berechne max
  • main

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung