quicksort :: Ord a => [a] -> [a]
quicksort [] = []
{-
quicksort (x:xs) = quicksort [n | n <- xs, n < x] ++
[x] ++
quicksort [n | n <- xs, n >= x]
-}
quicksort (x:xs) = quicksort lesser ++ x : quicksort greater
where
part l g [] = (l, g)
part l g (n:ns) = if n < x then part (n:l) g ns else part l (n:g) ns
(lesser, greater) = part [] [] xs
-- qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
-- import Data.List
-- qsort (x:xs) = qsort less ++ [x] ++ qsort more
-- where (less, more) = partition (<x) xs
-- http://en.wikipedia.org/wiki/Quicksort
-- http://www.haskell.org/haskellwiki/Introduction
-- http://en.literateprograms.org/Quicksort_(Haskell)
This entry was posted
on Saturday, June 30th, 2007 at 2:58 pm and is filed under Haskell - SOE.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.