20 lines
445 B
Haskell
20 lines
445 B
Haskell
merge :: [Integer] -> [Integer] -> [Integer]
|
|
merge [] lst = lst
|
|
merge lst [] = lst
|
|
merge (h1:t1) (h2:t2) = if h1 < h2 then
|
|
[h1] ++ merge t1 (h2:t2)
|
|
else
|
|
[h2] ++ merge (h1:t1) t2
|
|
|
|
sort :: [Integer] -> [Integer]
|
|
sort [] = []
|
|
sort [x] = [x]
|
|
sort lst = let
|
|
mid = div (length lst) 2
|
|
(left, right) = splitAt mid lst
|
|
in merge (sort left) (sort right)
|
|
|
|
main :: IO ()
|
|
main = let
|
|
lst = [10, 42, 2, 23, 666, 1, -94, 52]
|
|
in print $ sort lst
|