解题思路:

注意事项:

参考代码:

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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论