def merge_sort(arr): if len(arr) <= 1: return arr # 分割数组 mid = len(arr) // 2 left_half = merge_sort(arr[:mid]) right_half = merge_sort(arr[mid:]) # 合并数组 return merge(left_half, right_half) def merge(left, right): result = [] i = j = 0 # 合并两个子数组 while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 # 加入剩余的元素 result.extend(left[i:]) result.extend(right[j:]) return result