def merge_sort(seq): if len(seq) < 2: return seq mid = len(seq)/2 front = merge_sort(seq[:mid]) back = merge_sort(seq[mid:]) ret = [] while len(front) and len(back): if front[0] <= back[0]: ret.append(front.pop(0)) else: ret.append(back.pop(0)) return ret + front + back