-
Notifications
You must be signed in to change notification settings - Fork 0
/
shortestjobfirstalgo.cpp
60 lines (50 loc) · 1.33 KB
/
shortestjobfirstalgo.cpp
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
#include <iostream>
using namespace std;
typedef struct process {
int at;
int et;
int ct;
} process;
int main() {
process p[5];
int time = 0;
p[0].at = 3; p[0].et = 1;
p[1].at = 1; p[1].et = 4;
p[2].at = 4; p[2].et = 2;
p[3].at = 0; p[3].et = 6;
p[4].at = 2; p[4].et = 3;
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
if (p[i].at > p[j].at) {
process temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
bool completed[5] = {false};
int completed_count = 0;
while (completed_count < 5) {
int index = -1;
int min_et = INT_MAX;
for (int i = 0; i < 5; i++) {
if (p[i].at <= time && !completed[i] && p[i].et < min_et) {
min_et = p[i].et;
index = i;
}
}
if (index != -1) {
time += p[index].et;
p[index].ct = time;
completed[index] = true;
completed_count++;
} else {
time++;
}
}
cout << "Completion Times:" << endl;
for (int i = 0; i < 5; i++) {
cout << "Process " << i + 1 << ": " << p[i].ct << endl;
}
return 0;
}