解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题8.9 (C++代码)浏览:853 |
C语言训练-求具有abcd=(ab+cd)2性质的四位数 (C语言代码)浏览:1372 |
C二级辅导-求偶数和 (C语言代码)浏览:630 |
程序员的表白 (C语言代码)浏览:1328 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
简单的a+b (C语言代码)浏览:573 |
字符串的输入输出处理 (C语言代码)浏览:945 |
简单的for循环浏览:1411 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:542 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:682 |