def mergesort(L): print L if len(L)<2: return L[:] else: middle = len(L)/2 left = mergesort(L[:middle]) right = mergesort(L[middle:]) together = merge(left,right) print together return together def merge(left,right): result = [] i,j=0,0 while i <len(left) and j<len(right): if left[i]<=right[j]: result.append(left[i]) i=i+1 else: result.append(right[j]) j=j+1 while(i<len(left)): result.append(left[i]) i=i+1 while(j<len(right)): result.append(right[j]) j=j+1 return result M=[1,4,3,6,2,5] s=mergesort(M)