epswing merge sort
public python v1 · immutabledef merge_sort(alist): if len(alist) <= 1: return alist else: middle = len(alist)/2 left = merge_sort(alist[:middle]) right = merge_sort(alist[middle:]) return merge_lists(left, right)def merge_lists(left, right): output = [] while len(left) > 0 and len(right) > 0: if left[0] < right[0]: output.append(left.pop(0)) else: output.append(right.pop(0)) return output + left + right