Skip to content

Instantly share code, notes, and snippets.

@bowmanb
Last active October 13, 2015 17:27
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bowmanb/4230289 to your computer and use it in GitHub Desktop.
Save bowmanb/4230289 to your computer and use it in GitHub Desktop.
Quicksort in Haskell, from Learn You a Haskell for Great Good! Optimization courtesy of @saolsen.
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort [x] = [x]
quicksort (x:xs) =
let smallerOrEqual = [a | a <- xs, a <= x]
larger = [a | a <- xs, a > x]
in quicksort smallerOrEqual ++ [x] ++ quicksort larger
-- using filter
quicksort' :: (Ord a) => [a] -> [a]
quicksort' [] = []
quicksort' [x] = [x]
quicksort' (x:xs) =
let smallerOrEqual = filter (<= x) xs
larger = filter (> x) xs
in quicksort' smallerOrEqual ++ [x] ++ quicksort' larger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment