Skip to content

Instantly share code, notes, and snippets.

@fernandezpablo85
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fernandezpablo85/78ed53c1238b826622fe to your computer and use it in GitHub Desktop.
Save fernandezpablo85/78ed53c1238b826622fe to your computer and use it in GitHub Desktop.
module MergeSort(sort) where
sort :: (Ord a) => [a] -> [a]
sort [] = []
sort [a] = [a]
sort as = merge (sort firstHalf) (sort secondHalf)
where
(firstHalf, secondHalf) = splitAt half as
half = (pred . length) as
merge :: (Ord a) => [a] -> [a] -> [a]
merge as [] = as
merge [] bs = bs
merge (a:as) (b:bs) = if (a < b)
then a : merge as (b:bs)
else b : merge (a:as) bs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment