操作系统短作业优先(SJF)调度算法

       

一,算法代码

#include<stdio.h>struct sjf { //定义进程的结构体    char name[10];//进程名    float arrivetime;//到达时间    float servicetime;//服务时间    float starttime;//开始时间    float finishtime;//完成时间    float zztime; //周转时间    float dqzztime;//带权周转时间};struct sjf b[100];//定义短作业优先算法进程的最大数量void Sinput(struct sjf *p,int N) { //输入函数    int i;    printf("输入进程的名称、到达时间、服务时间:(例如   : x 0 100)\n");    for(i=0; i<=N-1; i++) {        printf("输入第%d进程的名称、到达时间、服务时间:",i+1);        scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);    }}//输出函数void SPrint( struct sjf *p,float arrivetime,float servicetime,             float starttime,float finishtime,float zztime,float dqzztime,int N) {    int k;    printf("\n执行顺序:\n");    printf("%s",p[0].name);    for(k=1; k<N; k++) {        printf("-%s",p[k].name);    }    printf("\n进程名\tarrive\tservice\tstart\tfinish\tzhouzhuan\tdaiquanzz\n");    for(k=0; k<=N-1; k++) {        printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n\n",        p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,        p[k].zztime,p[k].dqzztime);    }    printf("\n");    }     void Ssort(struct sjf *p,int N)     { //按短作业优先算法排序        int i,j;        for( i=1; i<=N-1; i++)            for( j=1; j<=i; j++)                if(p[i].servicetime<p[j].servicetime) {                    struct sjf temp;                    temp=p[i];                    p[i]=p[j];                    p[j]=temp;                }    }//运行结果    void Sdeal(struct sjf *p,float arrivetime,float servicetime,    float starttime,float finishtime,float zztime,float dqzztime,int N)    {        int k;        for(k=0; k<=N-1; k++) {            if(k==0) {                p[k].starttime=p[k].arrivetime;                p[k].finishtime=p[k].arrivetime+p[k].servicetime;            } else {                p[k].starttime=p[k-1].finishtime;                //开始时间 =    前一个进程的完成时间                p[k].finishtime=p[k-1].finishtime+p[k].servicetime;                //结束时间=前一个进程的完成时间  + 现在进程的服务时间            }        }    for(k=0; k<=N-1; k++) {        p[k].zztime=p[k].finishtime-p[k].arrivetime;        //  周转时间 =完成时间 -到达时间        p[k].dqzztime=p[k].zztime/p[k].servicetime;        //带权周转时间=周转时间 /服务时间    }}void SJF(struct sjf *p,int N){    float arrivetime=0,servicetime=0,starttime=0,    finishtime=0,zztime=0,dqzztime=0;    Ssort(p,N);    Sdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);    SPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);}void main() { //主函数    int M;    printf("-----------短作业优先调度算法-----------\n");    printf("输入进程数:");    scanf("%d",&M);    Sinput(b,M);    SJF(b,M);}
  • 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
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113

二,算法截图

这里写图片描述

本算法转自:https://wenku.baidu.com/view/c38baaf3fad6195f302ba668.html

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git add -A 、git add -u 、 git add . 三种区别

git add -A 提交所有变化 git add -u 提交被修改(modified)和被删除(deleted)文件&#xff0c;不包括新文件(new) git add . 提交新文件(new)和被修改(modified)文件&#xff0c;不包括被删除(deleted)文件 转载于:https://www.cnblogs.com/php08049/p/9214175.html

操作系统进程调度先来先服务FCFS

一&#xff0c;实验的流程图二&#xff0c;实验代码注&#xff1a;本代码主要来自豆丁&#xff0c;加入本人的部分修改。。//本FCFS是用不带都结点的链表完成。当然也可以用其他数据结构 #include<stdio.h>#include<stdlib.h>typedef struct PCB //定义进程控…

如何给SAP Cloud Connector Region列表中添加新的Region

SAP help里提供了CloudFoundry和Neo环境下可用的Region和API endpoint&#xff1a; 当我们期望用SAP Cloud Connector连接某个SAP云平台Region时&#xff0c;一般是从F4 value help里选择&#xff1a; 如果drop down list里没有我们希望使用的region怎么办&#xff1f; 解决方案…

java 8 中文API

java 1.6 帮助文档中文链接&#xff1a;http://download.csdn.net/detail/qw599186875/9608735Java1.8 帮助文档中文 – 谷歌版在线版: https://blog.fondme.cn/apidoc/jdk-1.8-google/ 下载链接&#xff1a;http://download.csdn.net/detail/qw599186875/9802192中文 – 有道版…

Swift - 循环强引用,内存泄漏

https://www.hangge.com/blog/cache/detail_742.htm 转载于:https://www.cnblogs.com/saytome/p/9219073.html

CUDA从入门到精通

CUDA从入门到精通&#xff08;零&#xff09;&#xff1a;写在前面在老板的要求下&#xff0c;本博主从2012年上高性能计算课程开始接触CUDA编程&#xff0c;随后将该技术应用到了实际项目中&#xff0c;使处理程序加速超过1K&#xff0c;可见基于图形显示器的并行计算对于追求…

Python hash、xml、configparser、sheve、shutil模块讲解 以及 面向对象初识

今日内容&#xff1a; 1.hash模块2.xml模块3.configparser模块4.sheve 模块5.shutil模块 知识点一&#xff1a;hash什么是hash&#xff1a; hash是一种算法&#xff0c;该算法接受传入的的内容&#xff0c;经过运算得到一串hash如果把hash算法比喻一座工厂 那传给hash算法的内容…

Eigen C++开源矩阵计算工具——Eigen的简单用法

Eigen非常方便矩阵操作&#xff0c;当然它的功能不止如此&#xff0c;由于本人只用到了它的矩阵相关操作&#xff0c;所以这里只给出了它的一些矩阵相关的简单用法&#xff0c;以方便快速入门。矩阵操作在算法研究过程中&#xff0c;非常重要&#xff0c;例如在图像处理中二维高…

SQL 登录注入脚本_常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御...

1.SQL注入原理:1).SQL命令可查询、插入、更新、删除等&#xff0c;命令的串接。而以分号字元为不同命 令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等 的条件式)2).SQL命令对于传入的字符串参数是用单引号字元所包起来。(但连续2个单引 号字元&#x…

微信小程序navigateBack如何带参数

wx.navigateBack({//返回 delta:1 }) 方法如下&#xff1a; 一. var pages getCurrentPages(); var prevPage pages[pages.length - 2]; //上一个页面 //直接调用上一个页面的setData()方法&#xff0c;把数据存到上一个页面中去 prevPage.setData({ mydata: {a:1, b:2} }) 二…

删除苹果自带软件后果_苹果IOS备忘录便签软件敬业签恢复删除内容应该怎么操作?...

敬业签是一款功能比较全面的苹果手机桌面备忘录便签软件&#xff0c;主要功能包括&#xff1a;云储存、多端云同步、提醒待办事项、时间管理、标记已完成、月视图和时间轴等。在使用苹果IOS备忘录便签软件敬业签的时候&#xff0c;如果不小心误删了内容&#xff0c;要想恢复的话…

repr方法字符串输出实例对象的值

#codingutf-8 #repr方法字符串输出实例对象的值 class CountFromBy(object):def __init__(self, val0, incr1):self.val valself.incr incrdef increase(self):self.val self.incrdef __repr__(self):return str(self.val)>>> c CountFromBy() >>> c 0 转…

OpenCV 获取摄像头并显示摄像头视频

OpenCV 获取摄像头&#xff0c;新建窗口显示摄像头视频 结合Leaning OpenCV 第二个例子 显示一个视屏文件 写了一下 获取摄像头的代码为并且创建窗口显示的代码为&#xff1a;#include "stdafx.h"#include <cv.h>#include <cxcore.h>#include <highg…

ubuntu安装提醒写入失败 没有启动项_手把手教你如何安装windo10+Ubuntu18.10双系统...

踩坑经历以前一直都是用win10系统在自己的电脑上开发&#xff0c;在公司也都是用Ubuntu系统&#xff0c;现在想在自己的笔记本上安装一个Ubuntu系统&#xff0c;所以就想着在不用重装系统的情况下&#xff0c;装一个Ubuntu系统&#xff0c;所以就准备装一个双系统&#xff0c;安…

图像处理常用边缘检测算子总结

不同图像灰度不同&#xff0c;边界处一般会有明显的边缘&#xff0c;利用此特征可以分割图像。需要说明的是&#xff1a;边缘和物体间的边界并不等同&#xff0c;边缘指的是图像中像素的值有突变的地方&#xff0c;而物体间的边界指的是现实场景中的存在于物体之间的边界。有可…

但行好事,莫问前程!

一次看超级演说家的时候听乐嘉说过这么一句话&#xff1a;“你在讲你爹&#xff0c;我在想我爹&#xff0c;这是演讲的最高境界”&#xff0c;我觉得不仅演讲&#xff0c;共鸣应该是无处不在&#xff0c;我们往往可能因为别人的一句话就幡然醒悟&#xff0c;茅塞顿开&#xff0…

用SQL语句向表格中插入数据

向表格中插入数据SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下&#xff1a; insert into tablename (first_column,...last_column) values (first_value,...last_value); 例如&#xff1a; insert into employee (firstname, lastnam…

微信开发者工具 wxmi修改模版颜色_网站建设公司讲解:微信小程序的开发者工具界面...

网站建设公司深圳市博纳网络信息技术有限公司()讲解&#xff1a;微信小程序的开发者工具界面创建项目后&#xff0c;进入到微信开发者工具界面&#xff0c;界面大致可以分为6个区域&#xff1a;①菜单栏区域&#xff0c;②模拟器、编辑器、调试器显示与隐藏区域&#xff0c;③模…

面向接口编程详解

博文地址&#xff1a; 思想基础 http://www.cnblogs.com/leoo2sk/archive/2008/04/10/1146447.html 编程实例 http://www.cnblogs.com/leoo2sk/archive/2008/04/11/1148236.html 模式研究 http://www.cnblogs.com/leoo2sk/archive/2008/04/14/1151569.html转载于:https://www.…

【微信小程序】数组操作

Page({data: {list:[{id:1,name:应季鲜果,count:1},{id:2,name:精致糕点,count:6},{id:3,name:全球美食烘培原料,count:12},{id:4,name:无辣不欢生猛海鲜,count:5}]} }) 一、向前向后新增数组 //假设这一段是我们要新增的数组 var newarray [{id:5,name:向后增加数据--new Dat…