%s",p[k].name); } printf("\nthe process's information:\n"); printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"); for(k=0;k<=N-1;k++) { printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime); } } //按到达时间排序 void sort(sjf *p,int N) { for(int i=0;i<=N-1;i++) for(int j=0;j<=i;j++) if(p[i].arrivetime=p[k].arrivetime) { p[k].starttime=p[k-1].finishtime;} else { p[k].starttime =p[k].arrivetime;} p[k].finishtime=p[k].starttime+p[k].servicetime; } } for(k=0;k<=N-1;k++) { p[k].zztime=p[k].finishtime-p[k].arrivetime;//周转时间=完成时间-到达时间 p[k].dqzztime=p[k].zztime/p[k].servicetime;//带权周转时间=周转时间/服务时间 } } //短作业优先调度算法 void sjff(sjf *p,int N) { float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N);//调用sort函数 for(int m=0;m=p[m].arrivetime ) { p[m].starttime=p[m-1].finishtime;} else { p[m].starttime =p[m].arrivetime;} p[m].finishtime=p[m].starttime+p[m].servicetime; } int i=0; for(int n=m+1;n<=N-1;n++) { if(p[n].arrivetime<=p[m].finishtime) i++; } //按服务时间排序 float min=p[m+1].servicetime; int next=m+1;//m+1=n for(int k=m+1;k