sort
:: Ord a
=> [a
] -> [a
]
sort [] = []
sort [x] = [x]
sort xs = merge (sort ys) (sort zs)
where
merge [] y=y
merge x []=x
merge (x:xs) (y:ys)
| x <= y = x:merge xs (y:ys)
sort ([15,20,31,39, 40, 43, 50])
c29ydCA6OiBPcmQgYSA9PiBbYV0gLT4gW2FdCgpzb3J0IFtdICAgICAgICAgPSAgW10Kc29ydCBbeF0gICAgICAgID0gIFt4XQpzb3J0IHhzICAgICAgICAgPSAgbWVyZ2UgKHNvcnQgeXMpIChzb3J0IHpzKQogIHdoZXJlIAogICAgICAoeXMsenMpID0gIHNwbGl0QXQgKGxlbmd0aCB4cyBgZGl2YCAyKSB4cwogICAgICAgbWVyZ2UgW10geT15CiAgICAgICBtZXJnZSB4IFtdPXgKICAgICAgIG1lcmdlICh4OnhzKSAoeTp5cykKICAgICAgICAgfCB4IDw9IHkgPSB4Om1lcmdlIHhzICh5OnlzKQogICAgICAgICB8IG90aGVyd2lzZSA9IHk6bWVyZ2UgKHg6eHMpIHlzCgpzb3J0IChbMTUsMjAsMzEsMzksIDQwLCA0MywgNTBdKQ==