📄 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 + -