def mergesort(data): if len(data) <= 1: return data mid = len(data) // 2 leftdata = mergesort(data[:mid]) rightdata = mergesort(data[mid:]) result = [] while len(leftdata) > 0 and len(rightdata) > 0: if leftdata[0] > rightdata[0]: result.append(rightdata.pop(0)) else: result.append(leftdata.pop(0)) return result + leftdata + rightdata