解题思路:
注意事项:
参考代码:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复