Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local A B MyMerge MySplit MyMergeSort in
- fun {MyMerge Xs Ys}
- case Xs#Ys
- of Xs#nil then
- Xs
- [] nil#Ys then
- Ys
- [] (X|Xr)#(Y|Yr) then
- if X<Y then
- X|{MyMerge Xr Ys}
- else
- Y|{MyMerge Xs Yr}
- end
- end
- end
- proc {MySplit Xs ?Ys ?Zs}
- case Xs
- of nil then
- Ys = nil
- Zs = nil
- [] [X] then
- Ys = [X]
- Zs = nil
- [] X1|X2|Xr then Yr Zr in
- Ys = X1|Yr
- Zs = X2|Zr
- {MySplit Xr Yr Zr}
- end
- end
- fun {MyMergeSort Xs}
- case Xs
- of nil then
- nil
- [] [X] then
- [X]
- [] _|_ then Ys Zs in
- {MySplit Xs Ys Zs}
- {MyMerge {MyMergeSort Ys} {MyMergeSort Zs}}
- end
- end
- A = [5 2 6 4 1]
- B = {MyMergeSort A}
- {Browse B}
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement