Beiträge von Roflkopf

    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

    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 :(
    Irgendwelche weiteren Tipps? :p

    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:

    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