def mergeArr(a,b): la=len(a) lb=len(b) r=[] ia=ib=0 while(True): if (ib>=lb): for ja in range(ia,la): r+=[a[ja]] break if (ia>=la): for jb in range(ib,lb): r+=[b[jb]] break if (a[ia]>b[ib]): r+=[b[ib]] ib+=1 else: r+=[a[ia]] ia+=1 return r def mkA(arr): r=[] for a in arr: r+=[[a]] return r def mergeSort(arr): tmp=mkA(arr) while(True): res=[] print(str(tmp)) l=len(tmp) if l==1: return tmp[0] i=0 while (i+1<=l-1): res+=[mergeArr(tmp[i],tmp[i+1])] i+=2 if i==l-1: res+=[tmp[l-1]] tmp=res x=mergeSort([1,2,3,1,2,3,1,2,3,1,2,4,1,2,5]) print(str(x))
Standard input is empty
[[1], [2], [3], [1], [2], [3], [1], [2], [3], [1], [2], [4], [1], [2], [5]] [[1, 2], [1, 3], [2, 3], [1, 2], [1, 3], [2, 4], [1, 2], [5]] [[1, 1, 2, 3], [1, 2, 2, 3], [1, 2, 3, 4], [1, 2, 5]] [[1, 1, 1, 2, 2, 2, 3, 3], [1, 1, 2, 2, 3, 4, 5]] [[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5]] [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5]