最短作业优先算法SJF,求平均等待时间
2016-08-25 11:23
225 查看
#include <iostream> #include <vector> using namespace std; //最短作业优先算法SJF,求平均等待时间。 float waitingTimeSJF(int *requestTimes, int *durations, int n) { // WRITE YOUR CODE HERE int cpu_time=0; float wait_time=0; vector<int> vec_flag; vec_flag.resize(n); for(int i=0;i<n;i++){ vec_flag[i]=0; } vector<int> vec_ready(n); int vec_ready_n=0; int cur=0; int next=0; int min=101; for(int i=0;i<n;i++){ //cout<<cur<<ends<<durations[cur]<<endl; wait_time=wait_time+(cpu_time-requestTimes[cur]); cpu_time+=durations[cur]; vec_flag[cur]=1; vec_ready_n=0; for(int j=0;j<n;j++){ /*if(vec_flag[i]==0 && requestTimes[i]<=cpu_time){ vec_ready[vec_ready_n++]=i; }*/ //在线笔试的时候这个地方将本来应该是j的写成了i,导致结果错误,并且后面无法继续进行。 if(vec_flag[j]==0 && requestTimes[j]<=cpu_time){ vec_ready[vec_ready_n++]=j; } } min=101; for(int k=0;k<vec_ready_n;k++){ if(durations[vec_ready[k]]<min){ min=durations[vec_ready[k]]; next=vec_ready[k]; } } cur=next; } return (wait_time/n); } // FUNCTION SIGNATURE ENDS int _tmain(int argc, _TCHAR* argv[]) { int a[4]={0,2,4,5}; int b[4]={7,4,1,4}; float result=waitingTimeSJF(a,b,4); cout<<result<<endl; return 0; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
相关文章推荐
- 证明SJF(Shortest Job First:最短作业优先算法)策略生成的调度方案理论最优
- java_实现先来先服务(FCFS)短作业优先算法(SJF)
- 进程调度算法 短作业优先 SJF
- 假设系统按单值方式运行且采用最短作业优先算法,有J1,J2,J3,J4共4个作业同时到达,则以下哪几种情况下的平均周转时间为10分钟?
- 最短作业优先---SJF
- 短作业优先算法-SJF
- [置顶] Java模拟最短作业优先、时间片轮转、最高响应比三种进程调度算法
- java短作业优先调度算法(SJF) ---------> 求平均等待时间
- 百度2017年暑假实习生编程题目(第三题)---3、进程调度算法 短作业优先(SJF, Shortest Job First)又称为“短进程优先
- SJF(最短作业优先)
- 短作业优先(SJF)算法
- 最短作业优先算法
- 先来先服务FCFS和短作业优先SJF进程调度算法
- 《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
- 最短作业优先(SJF)
- 最短作业优先(SJF)
- Java实现最短作业优化算法 (SJF算法)
- 操作系统算法——磁盘调度——最短路径优先、电梯调度
- 广度优先搜索算法-计算最短距离
- Huffman 编码 + 优先队列【算法+数据作业题】