#include<stdio.h>
#include<stdlib.h>
void main() {
int n;
int *waitTimes, *runtimes, *p;
printf("Enter the number of processes you want to create: ");
scanf("%d", &n);
waitTimes = malloc(sizeof(int) * n);
runtimes = malloc(sizeof(int) * n);
p = malloc(sizeof(int) * n);
if (!waitTimes) {
printf("\nFailed to create an array");
exit(1);
}
for (int i = 0; i < n; i++) {
p[i] = i;
printf("P%d run time: ", i);
scanf("%d", &runtimes[i]);
}
for (int i = 0, len = n - 1; i < len; i++) {
for (int j = 0, l = n - 1 - j; j < l; j++) {
if (runtimes[j] > runtimes[j + 1]) {
int temp = runtimes[j + 1];
runtimes[j + 1] = runtimes[j];
runtimes[j] = temp;
temp = p[j + 1];
p[j + 1] = p[j];
p[j] = temp;
}
}
}
waitTimes[0] = 0;
for (int i = 1; i < n; i++) {
waitTimes[i] = 0;
for (int j = 0; j < i; j++) {
waitTimes[i] += runtimes[j];
}
}
printf("Process\t\tRun Time\tWait Time\tTurnaround Time\n");
int sumWaitTimes = 0;
int sumTurnaTime = 0;
for (int i = 0; i < n; i++) {
printf("P%d\t\t%d\t\t%d\t\t%d\n", p[i], runtimes[i], waitTimes[i], runtimes[i] + waitTimes[i]);
sumWaitTimes += waitTimes[i];
sumTurnaTime += runtimes[i] + waitTimes[i];
}
printf("Average Waiting Time: %d\n", sumWaitTimes / n);
printf("Average Turnaround Time: %d\n", sumTurnaTime / n);
}
最短作业优先(SJF)作业调度算法(C)
最新推荐文章于 2024-05-30 06:45:00 发布