Help:=proc(): print(`MergeLists(L1,L2),MergeSort(L)`):end: #MergeLists(L1,L2): merges two increasing lists MergeLists:=proc(L1,L2) : if L1=[] then RETURN(L2): elif L2=[] then RETURN(L1): fi: if L1[1]<=L2[1] then RETURN([L1[1],op(MergeLists([op(2..nops(L1),L1)],L2))]): else RETURN([L2[1],op(MergeLists([op(2..nops(L2),L2)],L1))]): fi: end: #MergeSort(L): Merge Sort MergeSort:=proc(L) local L1,L2: if L=[] or nops(L)=1 then RETURN(L): fi: L1:=[op(1..trunc(nops(L)/2),L)]: L2:=[op(trunc(nops(L)/2)+1..nops(L),L)]: L1:=MergeSort(L1): L2:=MergeSort(L2): MergeLists(L1,L2): end: