初级
插入与归并
未完成
初级参考
完整示例代码供参考,建议自己理解后重新输入
def solve(original, partial):
original = list(map(int, original.split(",")))
partial = list(map(int, partial.split(",")))
n = len(original)
for i in range(1, n):
if partial[:i+1] == sorted(partial[:i+1]) and partial[i+1:] == original[i+1:]:
print("Insertion Sort")
nxt = partial[:]
if i + 1 < n:
key = original[i+1]
nxt[i+1] = key
j = i
while j >= 0 and nxt[j] > key:
nxt[j+1] = nxt[j]
j -= 1
nxt[j+1] = key
print(" ".join(map(str, nxt)))
return
print("Merge Sort")
seg = 1
while True:
seg *= 2
prev = []
for i in range(0, n, seg // 2):
prev += sorted(original[i:i + seg // 2])
if prev == partial:
nxt = []
for i in range(0, n, seg):
nxt += sorted(original[i:i + seg])
print(" ".join(map(str, nxt)))
return
if seg >= n * 2:
break
示例
输入
3,1,2,8,7,5,9,4,6,0|1,3,2,8,5,7,4,9,0,6
期望输出
Merge Sort 1 2 3 8 4 5 7 9 0 6
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199