有2组器件共n个,要用一台检测设备检测。每个送检器件的信息包含送达时间、检测时长和优先级。优先级有m(l<m<6)个等级。由高到低分别用0-m-l的整数表示。每个机器件的送达时间各不相同,已送达的器件按照各优先级通道分别排队,先到达先入队,设备每次检测都从当前各非空队列中,选取优先级最高的队列的队首器件出队进行检测。(同一时刻出现入队和出队时,先处理入队。)
编写程序模拟检测过程,先合并2组器件的数据,然后计算所有器件的平均等待时长,其中每个器件等待时长为其开始检测的时间与送达时间的时间差。(时间单位均为秒)
请回答下列问题:
(l)由题意可知,图中器件A、B、C、D的检测顺序为A-C-D-B,A、C、D的等待时长分别为0、l、0,B的等待时长是

(2)定义如下merge(1stl,lst2)函数,参数lstl和lst2的每个元素由送达时间、检测时长和优先级3项构成,1stl和lst2均已按送达时间升序排列。函数功能是将lst2中的元素合并到1stl中,并将1stl按送达时间升序排列,函数返回1stl。
def merge(1stl,Ist2)
i=len(lstl)-l
j=len(lst2)-1
for t in range(len(lst2)):
1stl.append([0,0,0]) #为1stl追加一个元素[0,0,0]
k=len(1stl)-1
while j>=0:
if i>=0 and 1stl[i][0]>lst2[j][0]:
1stl[k]=1stl[i]
i-=l
else:
1stl[k]=lst2[j]
j-=l
k-=1
return 1stl
①调用merge(1stl,lst2)函数,若1stl为([0,3,2],[1,1,2],[12,2,2]],1st2为[2,l,1],[4,3,0],[1l,3,2]],则while语句中循环体的执行次数是
②若函数中while语句的条件“j>=0”误写为“k>=0”,会导致某些情况下无法得到符合函数功能的结果。调用merge(1stl,lst2)函数,下列4组数据中能测试出这一问题的是
A.1stl=[[0,3,2],[4,3,0]]
lst2=[[1,1,2J]
B.1stl=[[1,1,2]]
1st2=[[0,3,2],[4,3,0]]
C.1stl=[[l,1,2],[4,3,0]]
lst2=[[0,3,2]]
D.1stl=[[4,3,0]]
1st2=[[0,3,2],[l,1,2]]
(3)实现模拟检测过程并计算平均等待时长的部分Python程序如下,请在划线处填入合适的代码。
def proc(data,m):
n=len(data)
queinfo=[]
for i in range(m):
queinfo append([-l,-1]) #queinfo追加一个元素[-l,-1]
for i in range(n):
data[i].append(-1) #data]追加一个元素-1
curtime=0
waitnum=0
i=0
①
while i<n or waitnum>0:
if i<n and datalill0]<=curtime:
k=data[i][2]
if queinfo[k][0]==-l:
queinfo[k][0]=i
else:
②
data[p][3]=i
queinfo[k][1]=i
waitnum+=l
i+=l
elif waitnum>0:
k=0
while queinfo[k][0]= =-1:
k+=l
p=queinfo[k][0]
total +=curtime-data[p][0]
curtime+=data[p][1]
③
waitnum-=1
else:
curtime=data[i][0]
return total/n
读取2组器件的数据,分别存入列表data1和data2中。2个列表的每个元素包含3个数据项,分别对应器件的送达时间、检测时长和优先级。data1和data2中的数据已分别按送达时间升序排列,代码略
读取优先级等级个数存入m,代码略
…
data=merge(data1,data2)
print(proc(data,m))

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

