defmodule MSrt do def mSrt([]), do: [] def mSrt([e]), do: [e] def mSrt(ls) do hf=div(length(ls),2) {l1,l2}=Enum.split(ls,hf) mMrg(mSrt(l1),mSrt(l2)) end defp mMrg([],ls), do: ls defp mMrg(ls,[]), do: ls defp mMrg([e1,r1],[e2,r2]) when e1>e2, do: [e1|mMrg(r1,[e2|r2])] defp mMrg(l1,[e2|r2]), do: [e2|mMrg(l1,r2)] end