标签:
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);是对FCFS算法的改进,其目标是减少平均周转时间。
短作业优先调度算法基于这样一种思想:
运行时间短的优先调度;
如果运行时间相同则调度最先发起请求的进程。
PS:本题题面描述有误,但原题如此,不宜修改,实际优先级如下:
1)接到任务的时间;
2) 如果接收时间相同则调度 运行时间最短的任务。
等待时间:一个进程从发起请求到开始执行的时间间隔。
现在有n个进程请求cpu,每个进程用一个二元组表示:(p,q),p代表该进程发起请求的时间,p代表需要占用cpu的时间。
请计算n个进程的平均等待时间。
代码如下:
1 import java.text.DecimalFormat; 2 import java.util.ArrayList; 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.util.HashMap; 6 import java.util.List; 7 import java.util.Map; 8 import java.util.Scanner; 9 10 public class Main { 11 12 public static void main(String[] args) { 13 DecimalFormat de=new DecimalFormat("0.0000"); 14 Scanner scanner=new Scanner(System.in); 15 while(scanner.hasNext()) 16 { 17 int n=scanner.nextInt(); 18 int nn=n; 19 int[] nums=new int[n]; 20 Map<Integer,List<Integer>> map=new HashMap<>(); 21 int i=0; 22 while(nn>0) 23 { 24 nums[i]=scanner.nextInt(); 25 if(!map.containsKey(nums[i])) 26 { 27 List<Integer> list=new ArrayList<>(); 28 list.add(scanner.nextInt()); 29 map.put(nums[i], list); 30 } 31 else 32 { 33 List<Integer> list=map.get(nums[i]); 34 list.add(scanner.nextInt()); 35 } 36 i++; 37 nn--; 38 } 39 40 Arrays.sort(nums); 41 double sum=0; 42 int temp=0; 43 int start=0; 44 int t=0; 45 for(int k=0;k<n;) 46 { 47 List<Integer> list=map.get(nums[k]); 48 49 Collections.sort(list); 50 51 int count=list.size(); 52 int p=0; 53 if(k==0) 54 { 55 start=nums[k]; 56 sum=sum+start-nums[k]; 57 58 p++; 59 if(count==1) 60 temp=list.get(0); 61 while(p<count) 62 { 63 temp=list.get(p-1); 64 start=start+temp; 65 66 t=(start-nums[k]>0?(start-nums[k]):0); 67 sum=sum+t; 68 p++; 69 70 if(p==count) 71 temp=list.get(p-1); 72 73 } 74 p=0; 75 } 76 else{ 77 while(p<count) 78 { 79 if(p==0) 80 start=start+temp; 81 else 82 { 83 temp=list.get(p-1); 84 start=start+temp; 85 } 86 t=(start-nums[k]>0?(start-nums[k]):0); 87 sum=sum+t; 88 p++; 89 if(p==count) 90 temp=list.get(p-1); 91 } 92 p=0; 93 } 94 95 k=k+count; 96 } 97 System.out.println(de.format((double)(sum/(double)n))); 98 } 99 } 100 101 }
标签:
原文地址:http://www.cnblogs.com/ghuosaao/p/5800619.html