测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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)
上一题 下一题