java_实现先来先服务(FCFS)短作业优先算法(SJF)

 

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;
import java.util.concurrent.CountDownLatch;


public class FCFSANDSJF {
  
   private  static int i;
   private  int j;
   private int qiao[];
   private int qiao1[];
   private int process_number;
   private int arrival_time[];
   private int services_time[];
   private int completion_time[];
   private int turn_around_time[];
   private int average_turn_around_time[];
   private double add1;
   private double add2;
   private double add3;
   private double add4;
   private double average_add[];
   private double average_add1[];
   private double right_turn_around_time[];
   private int a[];
   private int b[];
   private int c[];
   private int d[];
   private int exchange;
 private void  FCFSANDSJF(){
  this.process_number=process_number;
  this.services_time=services_time;
  this.arrival_time=arrival_time;
  
  
 }
 private  void Set_process_number(int process_nuber)
 {
  this.process_number=process_nuber;
  
 }
 private int get_process_number(){
  return process_number;
 }
 private void Set_arrival_time(int arrival_time[]){
  for(i=0;i<process_number;i++){
   this.arrival_time[i]=arrival_time[i];
  }
 }
 private int[]  get__arrival_time(){
  
  for(i=0;i<process_number;i++){
   qiao[i]= arrival_time[i];
  }
  return qiao;
 }
 
 private void Set_services_time(int services_time[]){
  for(i=0;i<process_number;i++){
   this.services_time[i]=services_time[i];
  }
 }
 private int[] get_services_time(){
  for(i=0;i<process_number;i++){
   qiao1[i]=services_time[i];
  }
  return qiao1;
 }
 private void FCFS(){
  
  System.out.println("\n===FCFS先来先服务算法===");
  System.out.println("\n完成时间是:");
  for(i=0;i<process_number;i++){
   completion_time[i]=services_time[i];
   }
  for(i=0;i<process_number;i++){
   completion_time[i+1]=completion_time[i]+completion_time[i+1];
   
  }
  for(i=0;i<process_number;i++){
   System.out.print(completion_time[i]+"\t");
  }
  System.out.println("\n周转时间是:");
  for(i=0;i<process_number;i++){
   turn_around_time[i]=completion_time[i]-arrival_time[i];
  }
  for(i=0;i<process_number;i++){
   System.out.print(turn_around_time[i]+"\t");
  }
  System.out.println("\n平均周转时间是:");
  for(i=0;i<process_number;i++){
   average_turn_around_time[i]=turn_around_time[i];
   }
  for(i=0;i<process_number;i++){
   average_turn_around_time[i+1]=average_turn_around_time[i]+average_turn_around_time[i+1];
   add1=average_turn_around_time[i+1];
  }
  System.out.println(add1/process_number);
  System.out.println("\n带权周转时间:");
  for(i=0;i<process_number;i++){
   right_turn_around_time[i]=turn_around_time[i]/services_time[i];
   System.out.print(right_turn_around_time[i]+"\t");
  }
  System.out.println("\n平均带权周转时间:");
  for(i=0;i<process_number;i++){
   average_add[i]=right_turn_around_time[i];
   
  }
  for(i=0;i<process_number;i++){
   average_add[i+1]=average_add[i]+average_add[i+1];
   add2=average_add[i+1];
  }
  System.out.println(add2/process_number);
 }
 private void SJF(){
  System.out.println("\n===SJF:短作业优先算法===");
  System.out.println("\n完成时间是:");
  for(i=0;i<process_number;i++){
   a[i]=services_time[i];
  }
  for(i=1;i<process_number-1;i++){
   for(j=i+1;j<process_number;j++){
    if(a[j]<a[i]){
     exchange=a[j];
     a[j]=a[i];
     a[i]=exchange;
    }
     
   }
  
  }
  for(i=1;i<process_number;i++){
   for(j=1;i<process_number;j++){
    if(a[i]==services_time[j]){
     b[i]=j;
     break;
    }
   }
  }
  b[0]=services_time[0];
  for(i=1;i<process_number;i++){
   a[i]=a[i]+a[i-1];
   c[b[i]]=a[i];
   
  }
  c[0]=4;
  for(i=0;i<process_number;i++){
   
   System.out.print(c[i]+"\t");
  }
  System.out.println("\n周转时间是:");
  for(i=0;i<process_number;i++){
   turn_around_time[i]=c[i]-arrival_time[i];
  }
  for(i=0;i<process_number;i++){
   System.out.print(turn_around_time[i]+"\t");
  }
  for(i=0;i<process_number;i++){
   d[i]=turn_around_time[1];
  }
  for(i=0;i<process_number;i++){
   turn_around_time[i+1]=turn_around_time[i+1]+turn_around_time[i];
   add3=turn_around_time[i+1];
  }
  System.out.println("\n平均周转时间是:"+add3/process_number);
  System.out.println("\n带权周转时间是:");
  for(i=0;i<process_number;i++){
   right_turn_around_time[i]=c[i]/services_time[i];
  }
  for(i=0;i<process_number;i++){
   System.out.print(right_turn_around_time[i]+"\t");
  }
  System.out.println("\n平均带权周转时间是:");
  for(i=0;i<process_number;i++){
   right_turn_around_time[i+1]=right_turn_around_time[i+1]+right_turn_around_time[i];
   add4=right_turn_around_time[i+1];
  }
  System.out.println(add4/process_number);
  
 }
 public static void main(String[] args) throws Exception{
  System.out.println("请输入进程数:");
  FCFSANDSJF wo=new FCFSANDSJF();
  BufferedReader buf=null;
  buf=new BufferedReader(new InputStreamReader(System.in));
  String str1=null;
  str1=buf.readLine();
  wo.process_number=Integer.parseInt(str1);
  wo.arrival_time=new int[wo.process_number];
  wo.services_time=new int[wo.process_number];
  wo.completion_time=new int[wo.process_number+1];
  wo.turn_around_time=new int[wo.process_number+1];
  wo.average_turn_around_time=new int[wo.process_number+1];
  wo.right_turn_around_time=new double[wo.process_number+1];
  wo.average_add=new double[wo.process_number+1];
  wo.b=new int[wo.process_number+3];
  wo.a=new int[wo.process_number+3];
  wo.c=new int[wo.process_number+3];
  wo.d=new int[wo.process_number+3];
  
  String str=null;
  String str2=null;
 
  
  System.out.println("\n请输入各进程到达时间");
  for(i=0;i<wo.process_number;i++){
   str=buf.readLine();
   wo.arrival_time[i]=Integer.parseInt(str);
  }
  
  
  System.out.println("\n请输入各个进程服务时间");
  for(i=0;i<wo.process_number;i++){
   str2=buf.readLine();
   wo.services_time[i]=Integer.parseInt(str2);
   
  }
  System.out.println("该进程数为"+wo.process_number);
  System.out.println("\n到达时间为");
  for(i=0;i<wo.process_number;i++){
   System.out.print(wo.arrival_time[i]+"\t");
  }
  System.out.println("\n服务时间为:");
  for(i=0;i<wo.process_number;i++){
   System.out.print(wo.services_time[i]+"\t");
  }
  System.out.println("\n======先来先服务【0】========");
  System.out.println("\n======短作业优先【1】========");
  System.out.println("\n======退出系统【2】========");
  String str3=null;
  str3=buf.readLine();
  i=Integer.parseInt(str3);
  while(i!=2){
   
  switch (i) {
  case 0:
   wo.FCFS();
   break;
  case 1:
   wo.SJF();

  default:
   break;
  }
  if(i==2){
   break;
  }
  
  str3=buf.readLine();
  i=Integer.parseInt(str3);
      }
 }
        

}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值