运行结果
先看效果再附源码(源码、经验交流QQ群:613879714),有问题QQ群提问,这里不能及时回复
进程信息:{‘A’,1,2},{‘C’,2,1}, {‘B’,1,100},{‘D’,150,100}, {‘F’,150,80},{‘E’,200,4}
先到先服务(FCFS)
先按到达时间对进程进行排序(升序),再依次对排好序的进程依次服务。
- 第一个进程的开始时间是它的到达时间(A进程)
- 其余进程的开始是上个进程的完成时间
- 注:如果上一个进程完成时,该进程还没到达,则该进程的开始时间是它的到达时间(F进程)
短时间优先(SJF)
先按到达时间对进程进行排序(升序),再选择第一个进程去服务,其余按下面规则去服务。
- 短时间优先的前提条件是进程已到达的情况下才去按服务时间排序(升序)
- 服务完当前进程后,要去判断当前进程完成时,已到达的进程中哪个进程服务时间最短的
- 注:如果当前到达时,前面的进程早已服务完,则该进程的开始时间是它的到达时间(F进程)
源代码
#include<stdio.h>
#include<stdlib.h>
#define N 6
struct JOBS{
char jobID;//进程名
int ArriveTime;//到达时间
int ServerTime;//服务时间
int StartTime;//开始时间
int FinishTime;//完成时间
int WholeTime;//周转时间
float ValueWholeTime;//带权周转时间
}job[N]={
{
'A',1,2},
{
'C',2,1},
{
'B',1,100},
{
'D',150,100},
{
'F',150,80},
{
'E',200,4}
};
//交换
void change(int i,int j){
int tempAT,tempST;
char chang;
chang=job[i].jobID;
tempAT=job[i