【算法】C++实现短作业优先算法

一、说明

作业/进程调度算法 – 短作业优先算法

  1. 算法思想:追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间。
  2. 算法规则: 服务时间最短的作业/进程优先得到服务。
  3. 抢占式版本:最短剩余时间优先算法(SRTN)
  4. 缺点:对短作业有利,对长作业不利。如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。

二、代码

#include <string>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;

// 就绪队列最大长度
const int MAX = 100;
// 就绪态
#define W "waitting"
// 运行态
#define R "running"
// 完成态
#define F "finished"

struct WORK
{
   
	// 进程名称
	string work_name;
	// 到达时间
	int arrive_time;
	// 剩余服务时间
	int serve_time;
	// 服务时间
	int r_serve_time;
	// 进程状态
	string work_state;
	// 结束时间
	int end_time;
	// 周转时间
	int turnover_time;
};

// 就绪队列
WORK work[MAX]; 
// 进程数量
int n; 


void init() {
   
	cout << "请输入需要调度的进程数: ";
	cin >> n;
	for (int i = 1; i <= n; ++i) {
   
		cout << "请输入进程" << i << "的名称、到达时间、服务时间: ";
		cin >> work[i].work_name >> work[i].arrive_time >> work[i].r_serve_time;
		// 进程状态
		work[i].work_state = W;
		// 结束时间
		work[i].end_time = -1;
		// 剩余服务时间
		work[i].serve_time = work
  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值