发布于2021-03-13 14:16 阅读(1047) 评论(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());
}
}
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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!