A20393. 合并有序列表现有两个列表中的数据已经分别升序排好,要求将两个列表合并到一个新列表中,最终结果依旧升序。例如两个有序列表为a=[11,25,64,75,88]和b=[10,33,46,50,90],最终合并到列表c中,结果为:[10, 11, 25, 33, 46, 50, 64, 75, 88, 90]实现上述功能的Python程序如下,请在划线处填入合适的代码。a=[11,25,64,75,8…
填空题
困难
知识点
题目描述
合并有序列表
现有两个列表中的数据已经分别升序排好,要求将两个列表合并到一个新列表中,最终结果依旧升序。例如两个有序列表为a=[11,25,64,75,88]和b=[10,33,46,50,90],最终合并到列表c中,结果为:[10, 11, 25, 33, 46, 50, 64, 75, 88, 90]
实现上述功能的Python程序如下,请在划线处填入合适的代码。
a=[11,25,64,75,88]
b=[10,33,46,50,90]
c=[0]*10
i=0
j=0
k=0
while ① : # 当列表a或列表b中的数据未合并完,继续循环
if i==len(a): # 当列表a中数据已经合并完,只需将列表b中的数据合并
②
j+=1
elif j==len(b): # 当列表b中数据已经合并完,只需将列表a中的数据合并
c[k]=a[i]
i+=1
elif ③ : # 当列表a和列表b中的数据都未合并完,将较小值合并到列表c中
c[k]=a[i]
i+=1
else:
c[k]=b[j]
j+=1
④ # 每合并完一个数据,列表c中的指针k往后走一步
print(c)参考答案
a=[11,25,64,75,88]
b=[10,33,46,50,90]
c=[0]*10
i=0
j=0
k=0
while i<len(a) or j<len(b): #当列表a或列表b中的数据未合并完,继续循环
if i==len(a): #当列表a中数据已经合并完,只需将列表b中的数据合并
c[k]=b[j]
j+=1
elif j==len(b): #当列表b中数据已经合并完,只需将列表a中的数据合并
c[k]=a[i]
i+=1
elif a[i]<b[j]: #当列表a和列表b中数据都未合并完,将较小值合并到列表c中
c[k]=a[i]
i+=1
else:
c[k]=b[j]
j+=1
k+=1 #每合并完一个数据,列表c中的指针k往后走一步
print(c)
上一题
下一题