在Linux系统中,使用vim或者sublime_text编辑器,编写SJF算法的程序代码,并实现以下功能:输出选择作业的次序;计算并输出平均作业周转时间;计算并输出平均带权周转时间。使用c语言且其次序和时间由我输入
时间: 2024-12-24 12:34:04 浏览: 45
在Linux系统中,使用Vim或Sublime Text编辑器编写SJF (Shortest Job First) 算法的C语言程序,可以按照以下步骤进行:
首先,创建一个新的C文件,例如叫做`sjf.c`。假设你已经有了主函数`main()`,下面是一个简单的示例,它实现了你所提到的功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体表示作业
typedef struct {
int id; // 作业ID
float burst_time; // 作业运行时间
} Job;
// 比较两个作业的优先级(SJF算法)
int compareJobs(const void *a, const void *b) {
return (*(Job *)a).burst_time - (*(Job *)b).burst_time;
}
// 主函数
int main() {
Job jobs[10]; // 假设最多有10个作业
int num_jobs, i;
printf("请输入作业数量:");
scanf("%d", &num_jobs);
for (i = 0; i < num_jobs; i++) {
printf("请输入作业 %d 的ID和运行时间:", i + 1);
scanf("%d%f", &jobs[i].id, &jobs[i].burst_time);
}
// 对作业数组进行排序
qsort(jobs, num_jobs, sizeof(Job), compareJobs);
printf("\n按 SJF 顺序选择作业:\n");
for (i = 0; i < num_jobs; i++) {
printf("作业 %d: ID=%d, 周转时间=%.2f\n", i+1, jobs[i].id, jobs[i].burst_time);
}
// 计算平均周转时间和带权周转时间
double total_turnaround = 0, weighted_turnaround = 0;
for (i = 0; i < num_jobs; i++) {
total_turnaround += jobs[i].burst_time;
weighted_turnaround += jobs[i].burst_time * (num_jobs - i);
}
double avg_turnaround = total_turnaround / num_jobs;
double avg_weighted_turnaround = weighted_turnaround / num_jobs;
printf("\n平均作业周转时间:%.2f\n", avg_turnaround);
printf("平均带权周转时间:%.2f\n", avg_weighted_turnaround);
return 0;
}
```
阅读全文
相关推荐


















