haskell quickosrt

  • Hi habe folgenden Algorithmus:

    qsort [] = []
    qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
    where
    elts_lt_x = [y | y <- xs, y < x]
    elts_greq_x = [y | y <- xs, y >= x] Wie ihr seht ist das Quicksort realisiert in Haskell. Meine Frage ist ob jemand weiß wie man den quicksort in haskell ohne die list comprehensions lösen könnte, daher ohne
    [y | y <- xs, y < x]

    und

    [y | y <- xs, y >= x].

    Kenne mich in haskell nicht aus, muß aber wissen wie man des ohne list comprehension machen
    kann.

    Bin für jeden Tipp dankbar


    Gruß


    Gaston

  • Du könntest die Funktion filter verwenden:

    Code
    qsort [] = []
    qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
        where
            elts_lt_x = filter (< x) xs
            elts_greq_x = filter (>= x) xs


    Allerdings gilt das vielleicht als geschummelt, da filter üblicherweise wiederum über list comprehensions definiert ist. Falls dem so ist, dann ersetze es durch eine selbstgeschriebene Funktion myfilter, die nicht mit list comprehensions, sondern rekursiv arbeitet.

    Und noch ein total arrogant herablassender Tip: Wenn du für Schule/Uni/sonstwas Haskell lernen sollst, dann lerne Haskell. Wenn du es nicht lernen sollst, aber trotzdem Probleme damit lösen sollst, dann sag deinem Lehrer/Professor/sonstwas, daß du mit dieser Art von Aufgabenstellung nicht einverstanden bist.

    *plantsch*

  • Danke, es ist tatsächlich so dass wir wahrscheinlich ne aufgabe in einer Klasur bekommen wo man den quicksort in haskell ohne list comprehension umschreiben muss. und da wir kein haskell lernen, habe ich hier einfach gerfragt.


    Gruß


    Gaston

Jetzt mitmachen!

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