python实现先来先服务调度算法
程序调度算法的核心就是排序,只要排好程序上cpu的顺序,其他的就是细节性问题,比如上一个程序执行完但是第二个程序还没到,那么此时就需要注意第二个程序上cpu的时间不是上一个程序结束的时间,而是它的到达时间,代码如下 if list_sorted[i][1]>time: completely_time=list_sorted[i][1]+list_sorted[i][2] else: completely_time=time+list_sorted[i][2] 以上就是判断程序的到达时间和当前时间来确定真实的完成时间 由于是先来找到算法,排序就很简单,直接都接收按到达时间排序就行,本人未简化代码如下 n=int(input()) list_name=input().split() list_time=list(map(int,input().split())) list_servicetime=list(map(int,input().split())) list_sort=[] for i in range(n): list_sort.append((list_name[i],list_time[i],list_servicetime[i])) list_sorted=sorted(list_sort,key=lambda x:(x[1],x[0])) time=list_sorted[0][1] for i in range(len(list_sorted)): if list_sorted[i][1]>time: completely_time=list_sorted[i][1]+list_sorted[i][2] else: completely_time=time+list_sorted[i][2] twist_time=completely_time-list_sorted[i][1] _twist_time=twist_time/list_sorted[i][2] list_sorted[i]=list_sorted[i]+(completely_time,twist_time,_twist_time) time=completely_time list_cname=['作 业 名:','到达时间:','服务时间:','完成时间:','周转时间:','带权周转时间:'] for i in range(6): print(list_cname[i],end='') list_output=[] for j in range(n): if i==5: list_output.append(f'{list_sorted[j][i]:.2f}') continue list_output.append(list_sorted[j][i]) print(*list_output)