短作业优先
算法思想
短作业优先也可以直接按到达时间来排序,不过第一个位置应该先给条件最优的作业,然后进行时间排序。
计算时,因为是时间大小排序,当作业服务时间更短时,要将其往前移动来达到短作业优先的功能。每次都这样排序就可完成要求。
#include<iostream>
#include<iomanip>
#include<string.h>
using namespace std;
struct work{
char name[20];//作业名
float arrive;// 到达时间
float service;//服务时间
float finish;//完成时间
float T;//周转时间
float W;//带权周转时间
};
int main(){
int n;//作业数
struct work z[20];
cin>>n;
for(int i=0;i<n;i++){
cin>>z[i].name;
}
for(int i=0;i<n;i++){
cin>>z[i].arrive;
}
for(int i=0;i<n;i++){
cin>>z[i].service;
}
//找出条件最优的一个作业,并将其值与z[0]交换
struct work a=z[0];//用一个结构体存z[0]或者已找到的最优作业的值
int min=0;//用来存储已找到的最优作业位置
for(int i=1;i<n;i++){
//交换条件为到达时间更早或相等且服务时间更短
if(a.arrive>=z[i].arrive&&a.service>z[i].service) {
a=z[i<