题目描述:
最短作业优先(SJF)是一种调度任务请求的策略。每个任务请求都含有请求时间(即向系统提交请求的时间)和持续时间(即完成任务所需时间)属性。当前任务完成后,SJF策略选择含有最短持续时间的任务执行。如果有多个任务具有相同持续时间,那么选择含有最早请求时间的任务。任务的等待时间为请求时间和实际开始时间的差值(即它等待系统执行所花费的时间)。可以假设,作业到达时,系统一直执行任务,从未空闲。
给定任务的请求时间和持续时间表,设计一个程序,使用短作业优先(SJF)算法计算平均等待时间。
输入:
任务请求时间整数列表 requestTimes
任务持续时间整数列表 durations
输出
返回使用SJF调度计算出的平均等待时间浮点数
测试用例:
input:[0,2,4,5] [7,4,1,4]
output:4.0
input:[0,1,3,9][2,1,7,5]
output:0.5
分析测试用例1:
首先0时刻开始,所以第一个执行的是7.此时time=0-0=0;
然后7时刻,所有的时间都已经到达,这个时候,选择持续时间最短的,执行1,此时time=7-4=3;
然后8时刻,选择最短的持续时间,这里有两个4