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
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. Roflkopf

Beiträge von Roflkopf

  • Abschätzen von Laufzeiten

    • Roflkopf
    • 10. Juli 2015 um 19:51

    Top, jetzt hab ich's verstanden!
    Danke euch beiden für eure Antworten, hat mir sehr weitergeholfen! :)
    Jetzt muss ich in der Klausur nur noch selbst drauf kommen :face_with_tongue:

    Danke nochmal und Mfg
    Roflkopf

  • Abschätzen von Laufzeiten

    • Roflkopf
    • 10. Juli 2015 um 16:48

    Ok, also das mit den n Schleifendurchläufen war ja genau mein Gedanke. Dass das Einfügen auch noch Laufzeit kostet, habe ich wohl irgendwie verdrängt.
    Trotzdem bleibt es mir unklar, warum das Einfügen log(n) ist...

  • Abschätzen von Laufzeiten

    • Roflkopf
    • 10. Juli 2015 um 13:18

    Hi zusammen,

    bin gerade dabei für Programmiertechnik zu lernen und bin jetzt bei der Komplexitätsanalyse angelangt. Habe allerdings große Probleme damit, die Laufzeit von Funktionen richtig abzuschätzen.
    Folgendes Beispiel:

    Code
    Set<Integer> fun(List<Integer> 1) {
         Set<Integer> s = new TreeSet<Integer>();
         for (int x : 1)
              s.add(x);
         return s;
    }


    Die Funktion schreibt alle Elemente der Liste 1 in die neue Menge s und gibt diese zurück.
    Nun soll die Laufzeit T(n) (worst case) abgeschätzt werden. n ist dabei die Größe der Liste 1.
    Ich hätte jetzt die Laufzeit T(n) = O(n) abgeschätzt, aber laut Lösungen ist die Laufzeit T(n) = O(n*log(n)).
    Kann mir jemand erklären, wie man auf diese Laufzeit kommt?

    MfG
    Roflkopf

  • Finden des kleinsten Elements in einem Array (rekursiv und ohne Schleifen)

    • Roflkopf
    • 7. Dezember 2013 um 17:46

    Super, danke Lacuno, hat mir sehr geholfen. Ich habs jetzt endlich geschafft :thumb:

    Code
    public int getSmallestElement(int[] array, int start, int ende){  
           if (start==ende)
               return array[start];
    
           int mittel = (start+ende)/2;
           return Math.min(getSmallestElement(array, start, mittel), getSmallestElement(array, mittel+1, ende)); 
    
       }

    Danke nochmal an alle und LG :)

  • Finden des kleinsten Elements in einem Array (rekursiv und ohne Schleifen)

    • Roflkopf
    • 7. Dezember 2013 um 16:46

    spinball
    Ich hab nochmal nachgefragt und du hast Recht, start bzw. ende sollen verändert werden.
    Habe jetzt nochmal neu angefangen und bin auf Folgendes gekommen:

    Code
    public int getSmallestElement(int[] array, int start, int ende){         
    if (start==ende)
           return array[start];
    
    return Math.min(getSmallestElement(array, start, ende/2), getSmallestElement(array, (ende/2), ende)); 
    
       }

    Da bekomme ich allerdings jetzt einen StackOverflowError, was start==ende betrifft :frowning_face:
    Irgendwelche weiteren Tipps? :p

  • Finden des kleinsten Elements in einem Array (rekursiv und ohne Schleifen)

    • Roflkopf
    • 2. Dezember 2013 um 18:36

    Hallo zusammen,

    ich habe eine Aufgabe bekommen, bei der ich eine Methode schreiben muss, die aus einem übergebenen int-Array das kleinste Element zurückgibt. Diese Methode soll ganz ohne Schleifen auskommen und rekursiv arbeiten. Als Hinweis ist gegeben, dass wir den übergebenen Array in 2 (möglichst) gleichgroße Teile aufteilen sollen. Das habe ich noch hinbekommen, allerdings weiß ich jetzt nicht wirklich wie es weitergehen soll.

    Bis jetzt habe ich folgendes:

    Code
    public int getSmallestElement(int[] array, int start, int ende){
    
           int smallest = 0;
           int[] hilf1;
           int[] hilf2;
           int length1 = array.length / 2;
           int length2 = (array.length / 2) + 1;
    
           if(array.length % 2 == 0)
           {
               hilf1 = new int[array.length / 2];
               System.arraycopy(array, start, hilf1, 0, array.length/2);
               hilf2 = new int[array.length / 2];
               System.arraycopy(array, array.length/2, hilf2, 0, array.length/2);
           }
           else
           {
               hilf1 = new int[length1];
               System.arraycopy(array, start, hilf1, 0, length1);
               hilf2 = new int[length2];
               System.arraycopy(array, length2-1, hilf2, 0, length2);
           }
    
           return smallest; //damit ist noch nichts passiert, ich weiß :P
       }
    Alles anzeigen

    Der Array soll beliebig lang sein und, dass start bzw ende übergeben werden, war vorgegeben.

    Ich bitte um Tipps, nicht um die Lösung.

    Ach und wir benutzen BlueJ.

    LG

Rechtliches

Impressum

Datenschutzerklärung