?? hrrn.java
字號:
import java.io.*;
class hrrn
{
public static void main(String args[])
{
int f=0;
int h1=0,h2=0;
double s1 = 0.00;
double s2 = 0.00;
int a_1[]=new int[5];//完成時間
int z_z[]=new int[5];//周轉時間
double d_z[]=new double[5];//帶權周轉時間
process a0 = new process("進程A",0,3);//到達時間及服務時間
process a1 = new process("進程B",2,6);
process a2 = new process("進程C",4,4);
process a3 = new process("進程D",6,5);
process a4 = new process("進程E",8,2);
process a[] = {a0,a1,a2,a3,a4};
first(a);
for(int i=0;i<a.length;i++)
{ process temp;
if(i==0)
a_1[i]= a[i].getfirst()+a[i].getrun();//完成時間
else
a_1[i]=f+a[i].getrun();
f=a_1[i];//完成時間
sort(a,f,i);
z_z[i]=(a_1[i]-a[i].getfirst());//周轉時間
d_z[i]= (double)(z_z[i]/a[i].getrun());//帶權周轉時間
s1+= z_z[i];
s2+=d_z[i];
System.out.print(a[i].toString()+"\n");
System.out.print("\t完成時間:"+a_1[i]+"\n");
System.out.print("\t周轉時間:"+z_z[i]+"\n");
System.out.print("\t帶權周轉時間:"+d_z[i]+"\n");
System.out.println();
}
s1=s1/5;
s2=s2/5;
System.out.print("\t平均周轉時間:"+s1+"\n");
System.out.print("\t帶權平均周轉時間:"+s2+"\n");
}
public static void first(process[] a) //調度起初時服務時間越短,優先級越高
{
process temp;
for (int i = 0; i < a.length; i++)
{
if(a[0].getfirst()>a[i].getfirst())
{
temp = a[i];
a[i] = a[0];
a[0] = temp;
}
}//誰第一個開始調度
}
public static void sort(process[] a,int f,int k)
{
int dz[]=new int[5];//
double h1=0,h2=0;
k++;
for (int i = 0;i<a.length-2;i++)
for(int j=k;j<a.length-1;j++)
{
process tmp;
dz[k]=f-a[k].getfirst();
dz[j+1]=f-a[j+1].getfirst();
h1 = (double)(dz[k] / a[k].getrun());
h2 = (double)(dz[j+1] / a[j+1].getrun());
if( f>=a[j].getfirst())//到達時間應該大于前一個完成時間
{ if(h1<h2)
{
tmp = a[k];
a[k] = a[j+1];
a[j+1] = tmp;
}//排列,響應比大的在隊列的前面。
}
}
}
}
class process
{
String name;
int start_time;
int run_time;
process(String n, int s,int r)
{
name=n;
start_time=s;
run_time=r;
}
public String getname()
{
return name;
}
public int getfirst()
{
return start_time;
}
public int getrun()
{
return run_time;
}
public String toString()
{
return "\t"+name+"\t\n"+"\t到達時間:"+start_time+"\t\n"+"\t運行時間:"+ run_time+"\n\n";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -