百度 进程调度算法
来源:互联网 发布:nginx request body 编辑:程序博客网 时间:2024/06/10 18:16
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);是对FCFS算法的改进,其目标是减少平均周转时间。
短作业优先调度算法基于这样一种思想:
运行时间短的优先调度;
如果运行时间相同则调度最先发起请求的进程。
等待时间:一个进程从发起请求到开始执行的时间间隔。
现在有n个进程请求cpu,每个进程用一个二元组表示:(p,q),p代表该进程发起请求的时间,p代表需要占用cpu的时间。
请计算n个进程的平均等待时间。
输入描述:
输入包含多组测试数据。
对于每组测试数据,第一行为一个整数n。
然后有n行,每行两个整数,代表上述的二元组(p,q).
保证:
2<=n<=2000,1<=p<=300,1<=q<=100.
输出描述:
对于每组数据,输出一个浮点数,代表平均等待时间,请保留4位有效数字
输入例子:
4
1 4
1 3
1 5
2 1
输出例子:
5.2500
import java.text.DecimalFormat;import java.util.*;public class Main { static class Task{ private int start; private int end; public int getEnd() { return end; } public void setEnd(int end) { this.end = end; } public int getStart() { return start; } public void setStart(int start) { this.start = start; } } public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { int n = scan.nextInt(); List<Task> tasks = new ArrayList<>(); for (int i = 0; i < n; i++) { Task task = new Task(); task.setStart(scan.nextInt()); task.setEnd(scan.nextInt()); tasks.add(task); } solve(tasks, n); } scan.close(); } private static void solve(List<Task> tasks,int n) { //按发起时间从小到大排序,发起时间一样按占用时间从小到大排序 Collections.sort(tasks, new Comparator<Task>() { @Override public int compare(Task t1, Task t2) { if (t1.getStart() == t2.getStart()) { return t1.getEnd() - t2.getEnd(); } return t1.getStart() - t2.getStart(); } }); int t = tasks.get(0).getStart(); double res = 0; for (int i = 0; i < n; i++) { int temp = tasks.get(i).getStart(); if (t > temp) { res += t - temp; } t += tasks.get(i).getEnd(); } DecimalFormat df = new DecimalFormat("0.0000"); System.out.println(df.format(res / n)); }}
0 0
- 百度 进程调度算法
- 百度面试(进程调度、调度算法)
- 百度 页面调度算法
- 进程调度算法
- 进程调度算法
- 进程优先级调度算法
- 进程调度算法
- 进程调度模拟算法
- 进程调度算法程序
- 进程调度算法
- 进程调度算法
- 进程调度算法
- 操作系统进程调度算法
- 进程调度算法
- 进程调度算法
- 进程调度算法例题
- 进程调度算法
- 进程调度算法
- 解决在部分手机webview字体显示过小的问题
- java文件读取web-inf下的spring的xml配置文件
- 相同HID设备的句柄获取
- 【算法设计与分析】墓地雕塑
- c#对两个txt文件的列合并
- 百度 进程调度算法
- 【杭电-oj】-1873-看病要排队(优先队列)
- PAT—1003. Emergency
- js、Jquery、AngularJs中的extend方法
- Tomcat类加载机制概述
- Git简单使用教程(五)-添加远程库
- 互联网存储技术浅谈
- 程序员每天该做的事
- js date时间操作(二)