#include<iostream>
using namespace std;
void main()
{
int aritime[10]={2,5,3,1,4,1,8,7,2,1};//时间
int runtime[10]={1,2,3,4,5,6,7,8,9,3};//运行时间
float high[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; //就绪队列
int exchange[10];//命令序列;
int i,j,k=0,m;
float temp=-1;
int xyz;
int w=aritime[0];//f
int total=0;//
int x;
//////找到arive最小的下标。
for(i=0;i<10;i++)
{ if(w>=aritime[i])
{ w=aritime[i]; x=i; }
}
exchange[0]=x;
total=aritime[x];
total=total+runtime[x]; //第一个进程运行完后需要的时间=到达时间+运行时间
for(i=0;i<10;i++)
{ if(aritime[i]<=total && i!=x)
{ high[i]=1+(float)(total-aritime[i])/(float)runtime[i]; temp=high[i];} //就绪队列赋值,计算响应比
else continue;
}
high[x]=-1;
for(i=0;i<10;i++)
{ if(temp>=high[i] && high[i]!=-1)
{ temp=high[i]; k=i; }//x=k
}
exchange[1]=k;
high[k]=-1;
//////////////////////////
for(j=2;j<10;j++)
{
total=total+runtime[k];
for(i=0;i<10;i++)
{
if(aritime[i]<=total)
{
high[i]=1+(float)(total-aritime[i])/(float)runtime[i]; temp=high[i];
}
else continue;
}
for(i=0;i<=j-1;i++)
{ xyz=exchange[i];
high[xyz]=-1;
}
for(m=0;m<10;m++)
if(temp<high[m])
temp=high[m];
for(i=0;i<10;i++)
{ if(temp>=high[i] && high[i]!=-1)
{ temp=high[i]; k=i; }//x=k
}
exchange[j]=k;
}
for(i=0;i<10;i++)
cout<<exchange[i];
}
响应比优先算法c++
需积分: 10 82 浏览量
2008-11-21
17:53:24
上传
评论
收藏 836KB RAR 举报
shujianghong
- 粉丝: 0
- 资源: 5
最新资源
- 冯璐阳 42105650—祝福.docx
- 基于多种算法及改进算法实现的移动机器人路径规划matlab源码(含A星算法+PRM+RRT的改进等).zip
- 布里斯托尔纸细分市场、总体规模、先进性、市占率行业分析报告2024年.docx
- Obi绳子插件,好用的很 6.5.4版本
- openjfx-22.0.1-windows-x64-bin-sdk.zip
- 基于ros和stm32f1的小车代码(含串口通信)+项目说明.zip
- 人体姿态估计-基于Tensorflow实现的人体姿态估计算法-附项目源码-优质项目分享.zip
- java实现所有算法大全
- JDBC DAO模式 (复习)
- Proteus仿真AT89C51电子密码锁
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈