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)
a==[15,20,31,39,40,43,50]
sort a
c29ydCA6OiBPcmQgYSA9PiBbYV0gLT4gW2FdCgpzb3J0IFtdICAgICAgICAgPSAgW10Kc29ydCBbeF0gICAgICAgID0gIFt4XQpzb3J0IHhzICAgICAgICAgPSAgbWVyZ2UgKHNvcnQgeXMpIChzb3J0IHpzKQogIHdoZXJlIAogICAgICAoeXMsenMpID0gIHNwbGl0QXQgKGxlbmd0aCB4cyBgZGl2YCAyKSB4cwogICAgICAgbWVyZ2UgW10geT15CiAgICAgICBtZXJnZSB4IFtdPXgKICAgICAgIG1lcmdlICh4OnhzKSAoeTp5cykKICAgICAgICAgfCB4IDw9IHkgPSB4Om1lcmdlIHhzICh5OnlzKQogICAgICAgICB8IG90aGVyd2lzZSA9IHk6bWVyZ2UgKHg6eHMpIHlzCgphPT1bMTUsMjAsMzEsMzksNDAsNDMsNTBdCnNvcnQgYQ==