解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:608 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:596 |
WU-拆分位数 (C++代码)浏览:779 |
DNA (C语言描述,数据结构)浏览:851 |
母牛的故事 (C语言代码)浏览:1427 |
出圈】指针malloc版浏览:355 |
数字游戏 (C++代码)浏览:1180 |
Pascal三角 (C语言代码)浏览:644 |
多输入输出练习2 (C语言代码)浏览:1655 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:560 |