User:Marcelo.parrela

From HaskellWiki
Revision as of 12:14, 14 October 2013 by Marcelo.parrela (talk | contribs) (Quicksort - An other Implementation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
-- by Marcelo Parrela (marcelo.parrela@gmail.com)
quicksort' []  = []
quicksort' (a:as) = quicksort' l1 ++ a : quicksort' l2 
    where
        (l1,l2) = separate as a [] []
        <i style="color: blue;">-- lê a lista e a separa em duas: l1 para os elementos</i>
        <i style="color: blue;">-- menores ou iguais ao pivot e l2 para os demais</i>
        separate [] _ a b = (a,b)
        separate (l:ls) a l1 l2
            | l <= a    = separate ls a l1' l2
            | otherwise = separate ls a l1 l2'
            where
                l1' = l1++[l]
                l2' = l2++[l]