Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. merge :: Ord a => [a] -> [a] -> [a]
  2. merge [] []         = []
  3. merge x []          = x
  4. merge (x:xs) (y:ys) = if x < y then x:merge (y:ys) xs else y:merge (x:xs) ys
  5.  
  6. halve :: [a] -> ([a], [a])
  7. halve xs = (take (quot (length xs) 2) xs, drop (quot (length xs) 2) xs)
  8.  
  9. msort :: Ord a => [a] -> [a]
  10. msort []  = []
  11. msort [x] = [x]
  12. msort xs  = merge (msort (fst (halve xs))) (msort (snd (halve xs)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement