本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

JAVA编写FCFS(先来先服务算法) 和 SJF(最短进程优先调度算法)

发布于2021-03-13 14:16     阅读(1074)     评论(0)     点赞(3)     收藏(5)


核心代码如下

import java.util.ArrayList;

import java.util.Scanner;

public class Sf {
/*
 * 传入参数的函数
 */
	public  static ArrayList<RR_bean> Setinfo(){
		
		ArrayList<RR_bean> list=new ArrayList<RR_bean>();
		Scanner in =new Scanner(System.in);
		System.out.println("输入进程总数:");
		int run= in.nextInt();
		
		for (int i = 1; i <=run; i++) {
			RR_bean r=new RR_bean();
			r.setJcName(i);
			System.out.println("请输入进程"+i+"的信息");	
			System.out.println("到达时间:");
			r.setJcDtime(in.nextDouble());
			System.out.println("服务时间:");
			r.setJcFtime(in.nextDouble());
			list.add(r);
		}
		return list;		
	}
/*
 * 先来先服务算法
 */
	public  static void  FCFS(ArrayList<RR_bean> list){
		double Dtime=0;//到达时间
		double Ftime=0;//服务时间
		double StartTime=0;//开始时间
		double EndTime=0;//结束时间
		double ZZTime=0;//周转时间
		double DQZZTime=0;//带权周转时间
		
          ArrayList<RR_bean> lst=list;
        for (int i = 0; i < lst.size(); i++) {
        	 RR_bean r=lst.get(i);  
             Dtime=r.getJcDtime();
             Ftime=r.getJcFtime();          
            
         if (i==0){ 
           StartTime=Dtime; 
           EndTime=Dtime+Ftime;//第一个进程完成时间=到达时刻+运行时间
         }
         else{
           StartTime=EndTime;
    	   EndTime=EndTime+Ftime;//后面的进程完成时间=之前完成时间+当前运行时间
         }
         ZZTime=EndTime-Dtime;
         DQZZTime=ZZTime/Ftime;
      System.out.println("进程"+r.getJcName()+": 到达时间:"+Dtime+" 服务时间:"+Ftime+" 开始时间:"+StartTime+" 完成时间"+EndTime+" 周转时间"+ZZTime+" 带权周转时间"+DQZZTime);
   }    
}
	
/*
 * 最短进程优先调度算法
 */
    public  static void  SJF(ArrayList<RR_bean> list){
    	double Dtime=0;//到达时间
		double Ftime=0;//服务时间
		double StartTime=0;//开始时间
		double EndTime=0;//结束时间
		double ZZTime=0;//周转时间
		double DQZZTime=0;//带权周转时间
		boolean T=true; 
         ArrayList<RR_bean> lst=list;
         RR_bean temp;
     //最短进程优先调度排序算法
         for (int i = 0; i < lst.size(); i++) {
        	if (i!=0) {
             for (int j = i + 1; j <lst.size(); j++) {
                 if (lst.get(i).getJcFtime() > lst.get(j).getJcFtime()) {             	 
                     temp = lst.get(i);                 
                     lst.set(i, lst.get(j));
                     lst.set(j, temp);
                }
     		} 		
     	  }else{
     		lst.set(0, lst.get(0));//最短进程优先调度排序算法,第一个创建进程不需要排序
         }   
      }   
       //参数计算
         for (int i = 0; i < lst.size(); i++) {
        	 RR_bean r=lst.get(i);  
             Dtime=r.getJcDtime();
             Ftime=r.getJcFtime();          
               if (i==0){ 
                 StartTime=Dtime; 
                 EndTime=Dtime+Ftime;//第一个进程完成时间=到达时刻+运行时间  ,开始时间=到达时刻
               }
               else{
                 StartTime=EndTime;
          	     EndTime=EndTime+Ftime;//后面的进程完成时间=之前完成时间+当前运行时间  开始时间=上一个进程完成时间
               }
               ZZTime=EndTime-Dtime;
               DQZZTime=ZZTime/Ftime;
            System.out.println("进程"+r.getJcName()+": 到达时间:"+Dtime+" 服务时间:"+Ftime+" 开始时间:"+StartTime+" 完成时间"+EndTime+" 周转时间"+ZZTime+" 带权周转时间"+DQZZTime);
         }    
 }       
 
	public static void main(String[] args) {
            /* 完成时间=结束时间=运行时间(服务时间)相加
             开始时间=上一个进程完成时间  (第一个进程=到达时间)
             周转时间=完成时间-创建时间
             带权周转时间=周转时间/运行时间(服务时间)*/
		
		//FCFS(Setinfo());
		SJF(Setinfo());
		
  }
}

Bean

public class RR_bean  {
	
private int jcName;  //进程名
private	double jcDtime; //到达时间
private double jcFtime; //服务时间

public int getJcName() {
	return jcName;
}
public void setJcName(int jcName) {
	this.jcName = jcName;
}
public double getJcDtime() {
	return jcDtime;
}
public void setJcDtime(double jcDtime) {
	this.jcDtime = jcDtime;
}
public double getJcFtime() {
	return jcFtime;
}
public void setJcFtime(double jcFtime) {
	this.jcFtime = jcFtime;
}

}

虽然写的很烂,但是还是能用的

原文链接:https://blog.csdn.net/weixin_55785480/article/details/114691142



所属网站分类: 技术文章 > 博客

作者:Hdhhd

链接:http://www.javaheidong.com/blog/article/114399/0680a1390557341763e1/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)