import random
def mk(num) :
x= [0]*num #创建列表 x= [0,0,……,0],其中 0 的个数是 num
x[0]=random.randint(5,10) #randint(a,b)返回[a,b]区间内的一个随机整数
for i in range(1,num) :
return x
m=n=5
a=mk(m)
b=mk(n)
print("原始数据序列 a 为:",a)
print("原始数据序列 b 为:",b)
①使用语句 a= mk(5)调用函数,加框处语句的执行次数是 (填写阿拉伯数字) 。
②执行上述代码后,关于输出的列表a、b 中的数据,下列说法正确的是 (单选,填字母: A .相同 / B .不相同 / C .可能相同)
b[0] | b[1] | b[2] | b[3] | b[4] |
10 | 11 | 15 | 16 | 17 |
为了使合并后的数据保存在列表a 中,现对列表 a 扩充 n 个元素“-1”,扩充后状态如下:
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] | a[8] | a[9] |
7 | 9 | 10 | 14 | 19 | -1 | -1 | -1 | -1 | -1 |
变量i赋值为0,指向列表b的首数据,变量p赋值为0,指向列表a的首数据,变量tot指向列表a的最后一个有效数据(如图所示) 。
合并的具体算法如下:
Ⅰ.如果 a [p]= – 1 ,则直接将 b[i]存储到 a [p]中,同时 tot 值增加 1;
Ⅱ.如果 a [p]>b[i] ,则整体将 a [p] ,… ,a [tot]向右移动一个位置,然后将 b[i]存储到空出的位置, 同时 tot 值增加 1。
Ⅲ. p 值增加 1;
小强编写的合并代码如下,请在划线处填入合适代码。
#将列表a 的数据个数存入m,列表b 的数据个数存入 n,代码略
#对列表 a 扩充 n 个-1,代码略
p=0
tot=
i=0
while : #将列表b 中元素 b[i]逐个插入到列表 a 中
if a[p]==-1 :
a[p]=b[i]
tot+=1
i+=1
elif a[p]>b[i] :
for j in range(tot,p-1,-1): #整体将 a[p], … ,a[tot]向右移动一个位置
a[j+1]=a[j]
tot+=1
i+=1
p+=1
print("合并后的数据序列为:",a)