解题思路:
注意事项:
参考代码:
def merge_sort(nums):
    if len(nums) <= 1:
        return nums
    # 分割阶段
    mid = len(nums) // 2
    left = nums[:mid]
    right = nums[mid:]
    left = merge_sort(left)     # 递归地对左子序列进行排序
    right = merge_sort(right)   # 递归地对右子序列进行排序
    # 合并阶段
    return merge(left, right)
def merge(left, right):
    merged = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            merged.append(left[i])
            i += 1
        else:
            merged.append(right[j])
            j += 1
    # 将剩余的元素直接放入merged中
    merged.extend(left[i:])
    merged.extend(right[j:])
    return merged
n = int(input())
nums = list(map(int, input().split()))
result = merge_sort(nums)
print(' '.join(map(str, result)))
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复