FCFS, SJF(java 구현)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class FCFSANDSJF {
private static int i;
private int j;
private int temp;
private int m[];
private int n[];
private int process_number;//
private int arrival_time[];//
private int services_time[];//
private int start_time[];//
private int completion_time[];//
private int turn_around_time[];//
private double add1;
private double add2;
private double add3;
private double add4;
private double right_turn_around_time[];
private void FCFS(){
System.out.println("
===FCFS ===");
System.out.println("
:");
for(i=0;i<process_number;i++){
System.out.print(arrival_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<process_number;i++){
System.out.print(services_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<process_number;i++){
n[i]=arrival_time[i];
m[i]=i;
}
for(i=0;i<process_number-1;i++){
for(j=i+1;j<process_number;j++){
if(n[i]>n[j]){
temp=n[i];
n[i]=n[j];
n[j]=temp;
temp=m[i];
m[i]=m[j];
m[j]=temp;
}
}
}
start_time[m[0]]=arrival_time[m[0]];
for(i=1;i<process_number;i++){
if(arrival_time[m[i]]<start_time[m[i-1]]+services_time[m[i-1]])
start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];
else
start_time[m[i]]=arrival_time[m[i]];
}
for(i=0;i<process_number;i++){
System.out.print(start_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<process_number;i++){
completion_time[i]=start_time[i]+services_time[i];
}
for(i=0;i<process_number;i++){
System.out.print(completion_time[i]+"\t");
}
System.out.println("
:");
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");
}
add1=0;
for(i=0;i<process_number;i++){
add1=add1+turn_around_time[i];
}
System.out.println("
:"+add1/process_number);
System.out.println("
:");
for(i=0;i<process_number;i++){
right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];
}
for(i=0;i<process_number;i++){
System.out.print(right_turn_around_time[i]+"\t");
}
System.out.println("
:");
add2=0;
for(i=0;i<process_number;i++){
add2=add2+right_turn_around_time[i];
}
System.out.println(add2/process_number);
}
private void SJF(){
System.out.println("
===SJF: ===");
System.out.println("
:");
for(i=0;i<process_number;i++){
System.out.print(arrival_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<process_number;i++){
System.out.print(services_time[i]+"\t");
}
System.out.println("
:");
m[0]=0;
for(i=0;i<process_number-1;i++){
if(arrival_time[i]>arrival_time[i+1])
m[0]=i+1;
}
for(i=0;i<process_number;i++){
n[i]=services_time[i];
m[i+1]=i;
}
for(i=0;i<process_number-1;i++){
for(j=i+1;j<process_number;j++){
if(n[i]>n[j]){
temp=n[i];
n[i]=n[j];
n[j]=temp;
temp=m[i+1];
m[i+1]=m[j+1];
m[j+1]=temp;
}
}
}
for(i=1;i<process_number+1;i++){
if(m[0]==m[i]){
for(j=i;j<process_number;j++){
m[j]=m[j+1];
}
}
}
start_time[m[0]]=arrival_time[m[0]];
for(i=1;i<process_number;i++){
if(arrival_time[m[i]]<start_time[m[i-1]]+services_time[m[i-1]])
start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];
else
start_time[m[i]]=arrival_time[m[i]];
}
for(i=0;i<process_number;i++){
System.out.print(start_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<process_number;i++){
completion_time[i]=start_time[i]+services_time[i];
}
for(i=0;i<process_number;i++){
System.out.print(completion_time[i]+"\t");
}
System.out.println("
:");
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");
}
add3=0;
for(i=0;i<process_number;i++){
add3=add3+turn_around_time[i];
}
System.out.println("
:"+add3/process_number);
System.out.println("
:");
for(i=0;i<process_number;i++){
right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];
}
for(i=0;i<process_number;i++){
System.out.print(right_turn_around_time[i]+"\t");
}
System.out.println("
:");
add4=0;
for(i=0;i<process_number;i++){
add4=add4+right_turn_around_time[i];
}
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.start_time=new int[wo.process_number+1];
wo.completion_time=new int[wo.process_number+1];
wo.turn_around_time=new int[wo.process_number+1];
wo.right_turn_around_time=new double[wo.process_number+1];
wo.m=new int[wo.process_number+1];
wo.n=new int[wo.process_number];
String str=null;
String str2=null;
System.out.println("
");
for(i=0;i<wo.process_number;i++){
str=buf.readLine();
wo.arrival_time[i]=Integer.parseInt(str);
}
System.out.println("
");
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("
");
for(i=0;i<wo.process_number;i++){
System.out.print(wo.arrival_time[i]+"\t");
}
System.out.println("
:");
for(i=0;i<wo.process_number;i++){
System.out.print(wo.services_time[i]+"\t");
}
System.out.println("
====== 【0】========");
System.out.println("
====== 【1】========");
System.out.println("
====== 【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();
break;
default:
System.out.println("
, ");
}
System.out.println("
====== 【0】========");
System.out.println("
====== 【1】========");
System.out.println("
====== 【2】========");
str3=buf.readLine();
i=Integer.parseInt(str3);
}
System.out.println(" !");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.