最短作业优先

本文介绍了一种基于SJF(Shortest Job First)调度算法的实现方法,通过C语言编程展示了进程调度的具体流程。该算法首先对到达的进程进行排序,并根据进程运行时间的长短来确定执行顺序,以优化系统的平均周转时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

#include<stdlib.h>

#define N 100

typedef struct process {

 int num;

 int time;

 int start;

 int end;

 int begin;

 int freetime;  

int arrivetime;

 int finish;

 int turn;

 double average;

}P;

P a[N],b;

int wordtime=0;

void sjf(int i,int j,int t,int n)

{

 a[0].finish=a[0].arrivetime+a[0].freetime;

 wordtime=a[0].finish;    

a[0].turn=a[0].time;  

a[0].average=(float)a[0].turn/a[0].time;  

for(i=1;i<n;i++)//执行  

{  

 for(j=i+1;j<n;j++)   

{   

 if(a[j].arrivetime<=a[i-1].finish)    

{    

 for(t=i;t<=j;t++)    

 {     

 if(a[t].time>a[j].time)      

{       

b=a[j];      

 a[j]=a[t];      

 a[t]=b;     

 }   

  }

   }

  } 

  if(a[i].arrivetime<a[i-1].finish)

  {    

a[i].finish=a[i-1].finish+a[i].freetime;

   a[i].turn=a[i].finish-a[i].arrivetime;  

 }   

else  

 {    

a[i].finish=a[i].arrivetime+a[i].freetime;  

  a[i].turn=a[i].time;

  }  

 a[i].average=(float)a[i].turn/a[i].time;

  wordtime=a[i].finish;

 }

转载于:https://www.cnblogs.com/dachui/p/5598564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值