用C语言和数组实现的短作业优先调度 非常简单
#include
using namespace std;
#define N 3
struct MM{
int id;//标号
int index;
char name[5];//进程名
int cometime;//到达时间
int worktime;//服务时间
int starttime;//开始时间
int overtime;//结束时间
int zztime;//周转时间
int daitime;//代权周转时间
}shortwork[N];
void input();
void work(int &count);
int main()
{
int count=N;
input();
work(count);
}
void input()
{
int i;
for(i=0;i<N;i++)
{
cout<<“请输入进程标号:”<<endl;
cin>>shortwork[i].id;
// cout<<“请输入进程名:”<<endl;
//cin>>shortwork[i].name;
cout<<“请输入到达时间:”<<endl;
cin>>shortwork[i].cometime;
cout<<“请输入服务时间:”<<endl;
cin>>shortwork[i].worktime;
}
}
void work(int &count)
{
int p;
int i;
int time=0;//时间轴
int wait=0;//等待作业数
int waittime=0;//等待时间
int t;
int k,j;
for(i=0;i<count;i++)
{if(shortwork[i].cometime<=time)
shortwork[i].index=1;
wait++;}
for(i=0;i<count;i++)
{
if(shortwork[i].index==1)
for(i=0;i<wait;i++)
{
for(j=0;j<wait-i;j++)
if(shortwork[j].worktime<shortwork[j+1].worktime)
{
t=shortwork[j].worktime;
shortwork[j].worktime=shortwork[j+1].worktime;
shortwork[j+1].worktime=t;
}
}
}
cout<<shortwork[wait].worktime<<"\t"<<shortwork[wait].cometime<<"\t"<<count<<wait<<endl;
time+=shortwork[wait].worktime;
}
/*
for(i=0;i<N;i++)
{
for(j=0;j<N-i;j++)
{
if(shortwork[j].cometime <shortwork[j+1].cometime)
{
t=shortwork[j].cometime;
shortwork[j].cometime=shortwork[j+1].cometime;
shortwork[j+1].cometime=t;
}}
}
}
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
{
if(shortwork[j].cometime==shortwork[j+1].cometime)
{
wait++;
}
}
for(i=0;i<wait;i++)//短作业排序
for(j=0;j<wait-i;j++)
{
if(shortwork[i].worktime<shortwork[i+1].worktime)
{
temp=shortwork[i].worktime;
shortwork[i].worktime=shortwork[i+1].worktime;
shortwork[i+1].worktime=temp;
}
}
*/