java实现fcfs_FCFS,SJF(java实现)

1 importjava.io.BufferedReader;2

3 importjava.io.InputStreamReader;4

5 public classFCFSANDSJF {6

7 private static inti;8

9 private intj;10

11 private inttemp;12

13 private intm[];14

15 private intn[];16

17 private int process_number;//进程数

18

19 private int arrival_time[];//到达时间

20

21 private int services_time[];//服务时间

22

23 private int start_time[];//开始时间

24

25 private int completion_time[];//完成时间

26

27 private int turn_around_time[];//周转时间

28

29 private doubleadd1;30

31 private doubleadd2;32

33 private doubleadd3;34

35 private doubleadd4;36

37 private doubleright_turn_around_time[];38

39 private voidFCFS(){40

41 System.out.println("\n===FCFS先来先服务算法===");42

43 System.out.println("\n到达时间是:");44

45 for(i=0;i

47 System.out.print(arrival_time[i]+"\t");48

49 }50

51 System.out.println("\n服务时间是:");52

53 for(i=0;i

55 System.out.print(services_time[i]+"\t");56

57 }58

59 System.out.println("\n开始时间是:");60

61 for(i=0;i

63 n[i]=arrival_time[i];64

65 m[i]=i;66

67 }68

69 for(i=0;i

71 for(j=i+1;j

73 if(n[i]>n[j]){74

75 temp=n[i];76

77 n[i]=n[j];78

79 n[j]=temp;80

81 temp=m[i];82

83 m[i]=m[j];84

85 m[j]=temp;86

87 }88

89 }90

91 }92

93 start_time[m[0]]=arrival_time[m[0]];94

95 for(i=1;i

97 if(arrival_time[m[i]]

99 start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];100

101 else

102

103 start_time[m[i]]=arrival_time[m[i]];104

105 }106

107 for(i=0;i

109 System.out.print(start_time[i]+"\t");110

111 }112

113 System.out.println("\n完成时间是:");114

115 for(i=0;i

117 completion_time[i]=start_time[i]+services_time[i];118

119 }120

121 for(i=0;i

123 System.out.print(completion_time[i]+"\t");124

125 }126

127 System.out.println("\n周转时间是:");128

129 for(i=0;i

131 turn_around_time[i]=completion_time[i]-arrival_time[i];132

133 }134

135 for(i=0;i

137 System.out.print(turn_around_time[i]+"\t");138

139 }140

141 add1=0;142

143 for(i=0;i

145 add1=add1+turn_around_time[i];146

147 }148

149 System.out.println("\n平均周转时间是:"+add1/process_number);150

151 System.out.println("\n带权周转时间是:");152

153 for(i=0;i

155 right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];156

157 }158

159 for(i=0;i

161 System.out.print(right_turn_around_time[i]+"\t");162

163 }164

165 System.out.println("\n平均带权周转时间是:");166

167 add2=0;168

169 for(i=0;i

171 add2=add2+right_turn_around_time[i];172

173 }174

175 System.out.println(add2/process_number);176

177

178

179 }180

181 private voidSJF(){182

183 System.out.println("\n===SJF:短作业优先算法===");184

185 System.out.println("\n到达时间是:");186

187 for(i=0;i

189 System.out.print(arrival_time[i]+"\t");190

191 }192

193 System.out.println("\n服务时间是:");194

195 for(i=0;i

197 System.out.print(services_time[i]+"\t");198

199 }200

201 System.out.println("\n开始时间是:");202

203 m[0]=0;204

205 for(i=0;i

207 if(arrival_time[i]>arrival_time[i+1])208

209 m[0]=i+1;210

211 }212

213 for(i=0;i

215 n[i]=services_time[i];216

217 m[i+1]=i;218

219 }220

221 for(i=0;i

223 for(j=i+1;j

225 if(n[i]>n[j]){226

227 temp=n[i];228

229 n[i]=n[j];230

231 n[j]=temp;232

233 temp=m[i+1];234

235 m[i+1]=m[j+1];236

237 m[j+1]=temp;238

239 }240

241 }242

243 }244

245 for(i=1;i

247 if(m[0]==m[i]){248

249 for(j=i;j

251 m[j]=m[j+1];252

253 }254

255 }256

257 }258

259 start_time[m[0]]=arrival_time[m[0]];260

261 for(i=1;i

263 if(arrival_time[m[i]]

265 start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];266

267 else

268

269 start_time[m[i]]=arrival_time[m[i]];270

271 }272

273 for(i=0;i

275 System.out.print(start_time[i]+"\t");276

277 }278

279 System.out.println("\n完成时间是:");280

281 for(i=0;i

283 completion_time[i]=start_time[i]+services_time[i];284

285 }286

287 for(i=0;i

289 System.out.print(completion_time[i]+"\t");290

291 }292

293 System.out.println("\n周转时间是:");294

295 for(i=0;i

297 turn_around_time[i]=completion_time[i]-arrival_time[i];298

299 }300

301 for(i=0;i

303 System.out.print(turn_around_time[i]+"\t");304

305 }306

307 add3=0;308

309 for(i=0;i

311 add3=add3+turn_around_time[i];312

313 }314

315 System.out.println("\n平均周转时间是:"+add3/process_number);316

317 System.out.println("\n带权周转时间是:");318

319 for(i=0;i

321 right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];322

323 }324

325 for(i=0;i

327 System.out.print(right_turn_around_time[i]+"\t");328

329 }330

331 System.out.println("\n平均带权周转时间是:");332

333 add4=0;334

335 for(i=0;i

337 add4=add4+right_turn_around_time[i];338

339 }340

341 System.out.println(add4/process_number);342

343 }344

345 public static void main(String[] args) throwsException{346

347 System.out.println("请输入进程数:");348

349 FCFSANDSJF wo=newFCFSANDSJF();350

351 BufferedReader buf=null;352

353 buf=new BufferedReader(newInputStreamReader(System.in));354

355 String str1=null;356

357 str1=buf.readLine();358

359 wo.process_number=Integer.parseInt(str1);360

361 wo.arrival_time=new int[wo.process_number];362

363 wo.services_time=new int[wo.process_number];364

365 wo.start_time=new int[wo.process_number+1];366

367 wo.completion_time=new int[wo.process_number+1];368

369 wo.turn_around_time=new int[wo.process_number+1];370

371 wo.right_turn_around_time=new double[wo.process_number+1];372

373 wo.m=new int[wo.process_number+1];374

375 wo.n=new int[wo.process_number];376

377 String str=null;378

379 String str2=null;380

381 System.out.println("\n请输入各进程到达时间");382

383 for(i=0;i

385 str=buf.readLine();386

387 wo.arrival_time[i]=Integer.parseInt(str);388

389 }390

391 System.out.println("\n请输入各个进程服务时间");392

393 for(i=0;i

395 str2=buf.readLine();396

397 wo.services_time[i]=Integer.parseInt(str2);398

399 }400

401 System.out.println("该进程数为"+wo.process_number);402

403 System.out.println("\n到达时间为");404

405 for(i=0;i

407 System.out.print(wo.arrival_time[i]+"\t");408

409 }410

411 System.out.println("\n服务时间为:");412

413 for(i=0;i

415 System.out.print(wo.services_time[i]+"\t");416

417 }418

419 System.out.println("\n======先来先服务【0】========");420

421 System.out.println("\n======短作业优先【1】========");422

423 System.out.println("\n======退出系统【2】========");424

425 String str3=null;426

427 str3=buf.readLine();428

429 i=Integer.parseInt(str3);430

431 while(i!=2){432

433 switch(i){434

435 case 0:436

437 wo.FCFS();438

439 break;440

441 case 1:442

443 wo.SJF();444

445 break;446

447 default:448

449 System.out.println("\n输入有误,请重新输入");450

451 }452

453 System.out.println("\n======先来先服务【0】========");454

455 System.out.println("\n======短作业优先【1】========");456

457 System.out.println("\n======退出系统【2】========");458

459 str3=buf.readLine();460

461 i=Integer.parseInt(str3);462

463 }464

465 System.out.println("系统已退出!");466

467 }468

469 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值