一:题目

输入N(N>0)个作业,输入每个作业的名字,到达时间,服务时间,按照高响应比优先算法,计算每个作业的完成时间,周转时间,带权周转时间(保留2位小数)。

输入格式:
第一行输入作业数目,第二行输入作业的名字,第三行输入到达时间,第四行输入服务时间。

输出格式:
按照到达时间从小到大排序,第一行输出作业的名字,第二行输出到达时间,第三行输出服务时间,第四行输出完成时间,第五行输出完成时间,第六行输出带权周转时间。

输入样例:
在这里给出一组输入。例如:

5
A B C D E
0 1 2 3 4
4 3 4 2 4

结尾无空行
输出样例:
在这里给出相应的输出。例如:

作 业 名:A B C D E
到达时间:0 1 2 3 4
服务时间:4 3 4 2 4
完成时间:4 7 13 9 17
周转时间:4 6 11 6 13
带权周转时间:1.00 2.00 2.75 3.00 3.25

二:思路

思路:1.响应比=(等待时间+服务时间)/服务时间
2.响应比越大,优先级越高
3.当完成时间小于后面的进程到达时间的时候,那么还是先来先服务
4.当完成时间大于后面进程的到达时间的时候,我们要根据响应比的大小
进行排序相应比大的先进行

三:上码

/**思路:1.响应比=(等待时间+服务时间)/服务时间2.响应比越大,优先级越高  3.当完成时间小于后面的进程到达时间的时候,那么还是先来先服务4.当完成时间大于后面进程的到达时间的时候,我们要根据响应比的大小进行排序相应比大的先进行 */
#include<bits/stdc++.h>
using namespace std;int N;
vector<char>v1(100);
vector<int>v2(100),v3(100); //v2:到达时间;v3:完成时间
vector<int>v4,v5;//v4:完成时间 v5:周转时间
vector<double>v6;//v6:带权周转时间 void ans(){//计算周转时间 = 完成时间 - 到达时间//带权周转时间 = (周转时间 / 服务时间)for(int i = 0; i < N; i++){int Turnaround_time = 0;double loat_Wi = 0;Turnaround_time = v4[i] - v2[i];v5.push_back(Turnaround_time);loat_Wi = (double)Turnaround_time / v3[i];v6.push_back(loat_Wi);        } cout << "作 业 名:"; for(int i = 0; i < N; i++){if(i == 0)cout << v1[i];else     cout << ' ' << v1[i];    }cout << endl;cout << "到达时间:";for(int i = 0; i < N; i++){if(i == 0)cout << v2[i];else     cout << ' ' << v2[i];    }cout << endl;cout << "服务时间:" ;for(int i = 0; i < N; i++){if(i == 0)cout << v3[i]; elsecout << ' ' << v3[i];   }cout << endl;cout << "完成时间:";for(int i = 0; i < N; i++){if(i == 0)cout << v4[i]; elsecout << ' ' << v4[i]; }cout << endl;cout << "周转时间:";for(int i = 0; i < N; i++){if(i == 0)cout << v5[i]; elsecout << ' ' << v5[i];   }cout << endl;cout << "带权周转时间:";for(int i = 0; i < N; i++){if(i == 0)printf("%.2lf",v6[i]); elseprintf(" %.2lf",v6[i]);}
} int main(){cin >> N;for(int i = 0; i < N; i++){cin >> v1[i];    }for(int i = 0; i < N; i++){cin >> v2[i];}for(int i = 0; i < N; i++){cin >> v3[i];}//到达时间升序处理for(int i = 0; i < N-1; i++){for(int j = N-2; j >= 0; j--){if(v2[j] > v2[j+1]){swap(v2[j],v2[j+1]);swap(v1[j],v1[j+1]);swap(v3[j],v3[j+1]);}         }} //这里主要是时间轴上的计算,int finish = v2[0]+v3[0];//单独处理第一个数据 v4.push_back(finish);   for(int i = 1; i < N; i++){if(finish >= v2[i]){//完成时间大于等于到达时间 需要等待 int j;for(j = i; j < N; j++){            if(finish < v2[j])break;     }int end = j-1;//break出去的时候已经不满足条件了int start = i;//求取响应比vector<double> vx(1000);for(int k = start; k <= end; k++){int wait = finish - v2[k];double response = (double)(wait +v3[k])/v3[k];vx[k] = response;//注意这里不能能用push_back(); }//按响应比进行排序    for(int k1 = start; k1 <= end - 1; k1++){for(int k2 = end - 1; k2 >= start; k2--){  if(vx[k2] < vx[k2+1]){swap(vx[k2],vx[k2+1]);swap(v3[k2],v3[k2+1]);swap(v1[k2],v1[k2+1]);swap(v2[k2],v2[k2+1]);                      }}} //完成时间为排完序后的时间 finish += v3[start]; v4.push_back(finish);                  } else{finish = v2[i] + v3[i];//当完成了,还有没有人来 v4.push_back(finish);     }       }//输出到达时间升序处理for(int i = 0; i < N-1; i++){for(int j = N-2; j >= 0; j--){if(v2[j] > v2[j+1]){swap(v2[j],v2[j+1]);swap(v1[j],v1[j+1]);swap(v3[j],v3[j+1]);swap(v4[j],v4[j+1]); }           }} ans();
} //测试数据
//5
//A B C D E
//0 1 2 4 4
//4 3 4 2 4//5
//A B C D E
//2 1 2 3 15
//4 3 4 2 4//5
//A B C D E
//2 1 10 3 4
//4 3 4 2 4//5
//A B C D E
//0 5 2 3 4
//4 3 4 2 4//5
//D B C A E
//6 5 2 3 4
//4 3 4 2 4//6
//a b c d e f
//0 4 5 6 8 10
//2 5 4 2 3 1


最近听到一句很好的话送给陌生的你:当你觉得你很厉害的时候,你的进步也就停止了。这是韩顺平老师说的,很有道理,无论何时,保持归零的心态,慢慢进步吧,我们共勉!!!!!!!!!!!!!

7-3 作业调度算法--高响应比优先 (40 分)(思路+详解+vector容器做法)Come Baby!!!!!相关推荐

  1. 7-2 作业调度算法--短作业优先 (30 分)(思路+详解+vector容器做法)Come Baby!!!!!!!!!!!

    一:题目 输入N(N>0)个作业,输入每个作业的名字,到达时间,服务时间,按照短作业优先算法,计算每个作业的完成时间,周转时间,带权周转时间(保留2位小数).输入格式: 第一行输入作业数目,第二 ...

  2. 作业调度算法--高响应比优先 操作系统_处理器管理_编程题

    操作系统_处理器管理_编程题 作业调度算法–高响应比优先 输入N个作业,输入每个的作业名字,到达的时间,服务的时间,根据高响应比优先算法,计算出每个作业的完成的时间,周转的时间,带权周转的时间(其中保 ...

  3. 操作系统调度算法--高响应比优先调度算法解析

    高响应比优先调度算法(Highest Response Radio Next,HRRN)是一种对CPU中央控制器响应比的分配的算法.HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之 ...

  4. 7-1 作业调度算法--先来先服务 (30 分)(思路+详解+vector+map+map做法)Come Baby!!!!!!!!!!!

    一:题目: 输入N(N>0)个作业,输入每个作业的名字,到达时间,服务时间,按照先来先服务算法,计算每个作业的完成时间,周转时间,带权周转时间(保留2位小数). 输入格式: 第一行输入作业数目, ...

  5. 作业调度算法【平均周转时间、平均带权周转时间、先来先服务FCFS、短作业优先SJF、高优先权(级)算法FPF、高响应比优先算法HRRN】

    文章目录 先来先服务算法(FCFS) 短作业优先算法(SJF).短进程优先算法(SPF) 周转时间和带权周转时间 高优先权(级)调度算法FPF 高响应比优先调度算法HRRN 先来先服务算法(FCFS) ...

  6. 假设有四个作业,它们的提交、运行时间如下表所示。若采用高响应比优先调度算法,试问平均周转时间和平均带权周转时间为多少?

    处理机调度算法 题目: 假设有四个作业,它们的提交.运行时间如下表所示.若采用高响应比优先调度算法,试问平均周转时间和平均带权周转时间为多少? 高响应比优先(HRRN)调度算法 是对FCFS调度算法和 ...

  7. 调度算法——先来先服务(FCFS)、短作业优先(SJF)、高响应比优先(HRRN) 例题详细!!!

    文章目录 前言 知识总览 先来先服务(FCFS, First Come First Serve) 短作业优先(SJF, Shortest Job First) 对FCFS和SJF两种算法的思考 高响应 ...

  8. 2.2.4 操作系统之作业/进程调度算法(FCFS先来先服务、SJF短作业优先、HRRN高响应比优先)

    文章目录 0.思维导图 1.先来先服务---FCFS 2.短作业优先---SJF 3.高响应比优先---HRRN 4.三种算法的对比和总结 0.思维导图 1.先来先服务-FCFS First come ...

  9. 十一、FCFS(先来先服务)、SJF(短作业优先)、HRRN(高响应比优先)

    一.知识总览 二.先来先服务(FCFS) **注意:**针对于先来先服务算法某些作业(或进程)平均周转时间长的缺点,提出了短作业优先的算法(SJF) 三.短作业优先(SJF) 1.非抢占式的短作业优先 ...

最新文章

  1. 求方程ax^2+bx+c=0的根。
  2. ajax和promise的结合使用
  3. springboot获取原生js请求_七节课带你学会SpringBoot,第三课
  4. 北斗导航 | 基于卡尔曼滤波的IMU+GNSS的组合导航(附Matlab源代码)
  5. YOLOv3 学习笔记:大神好贴汇总+自身经验记录
  6. LeetCode 249. 移位字符串分组(哈希)
  7. [机器学习-坑] error: Microsoft Visual C++ 14.0 is required
  8. 机器学习十大经典算法之逻辑回归
  9. 蓝桥杯 ADV-85 算法提高 算术运算
  10. 架构学习----消息队列
  11. 使用MEAT在iOS设备上采集取证信息
  12. edius裁剪快捷键_edius常用的快捷键有哪些-怎么设置快捷键-edius快捷键使用大全...
  13. Android之利用NanoHttpd搭建服务器
  14. maven配置时报错NB: JAVA_HOME should point to a JDK not a JRE**解决方法
  15. 用Python写个「倒计时」软件
  16. python scipy.optimize 非线性规划 求解局部最优和全局最优
  17. __name__的用法
  18. 【reverse】通俗易懂的gcc内联汇编入门+示例:实现花指令
  19. 三种免费的拍照翻译识别文字方法,总有一种适合你!
  20. Keras自定义损失函数出现:ValueError: Unknown loss function: focal_loss

热门文章

  1. django13:Session与Cookie操作
  2. C# 读取硬盘信息类
  3. java如何输出线程的标识符_Java多线程面试题
  4. Android之elevation实现阴影效果
  5. Android之倍数提高工作效率的 Android Studio 奇技
  6. python中html.parser_在Python中使用HTMLParser解析HTML的教程
  7. pytorch forward_【Pytorch部署】TorchScript
  8. linux生成地图,ROS中利用V-rep进行地图构建仿真
  9. 服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...
  10. android studio button位置_免费的Android开发环境