Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sort :: (Ord a) => [a] -> [a]
- sort [] = []
- sort xs = head . mergesort . split $ xs
- split :: [a] -> [[a]]
- split = map (:[])
- mergesort :: (Ord a) => [[a]] -> [[a]]
- mergesort [] = []
- mergesort [x] = [x]
- mergesort (xs:ys:rest) = mergesort $ merge xs ys : mergesort rest
- merge :: (Ord a) => [a] -> [a] -> [a]
- merge xs [] = xs
- merge [] xs = xs
- merge first@(x:xs) second@(y:ys) = if x < y then x : merge xs second
- else y : merge first ys
Advertisement
Add Comment
Please, Sign In to add comment