解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:626 |
大神老白 (C语言代码)浏览:769 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:530 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1071 |
最长单词 (C语言代码)浏览:1482 |
校门外的树 (C语言代码)浏览:989 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:552 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:487 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:574 |