package dianti;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
final static String direct = "R";//L代表向左,R代表向右
final static int startIndex = 30; //磁头位置
static ArrayList<Integer> discList = new ArrayList<Integer>();
static int[] discs = new int[] { 35,120,64,95,122,180,68,10 };
public static void main(String []args){
for (int i = 0; i < discs.length; i++) {
discList.add(discs[i]);
}
discList.add(startIndex);
Integer []temp = discList.toArray(new Integer[0]);
Arrays.sort(temp); //对新数组从小到大进行排序
discList.clear();
for(int i = 0;i<temp.length;i++){
discList.add(temp[i]);
}
int discNumber = 0;
int index = discList.indexOf(startIndex); //记录下开始的磁道数的索引
int maxindex = discList.size()-1;//最右的磁道索引
int minindex = 0;//最左的磁道索引
if(index == minindex){
for(int i = 0;i<discList.size();i++){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i>0){
discNumber+= Math.abs(discList.get(i)-discList.get(i-1));
}
}
System.out.println("访问总磁道数为"+discNumber);
}else if(index == maxindex){
for(int i = maxindex;i>=0;i++){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i<maxindex){
discNumber+= Math.abs(discList.get(i)-discList.get(i+1));
}
}
System.out.println("访问总磁道数为"+discNumber);
}else if(direct.equals("R") ){
for(int i = index;i<discList.size();i++){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i>index){
discNumber+= Math.abs(discList.get(i)-discList.get(i-1));
}
}
discNumber+= Math.abs(discList.get(index-1) - discList.get(maxindex));
for(int i = index-1;i>=0;i--){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i<index-1){
discNumber+= Math.abs(discList.get(i)-discList.get(i+1));
}
}
System.out.println("访问总磁道数为"+discNumber);
}else if(direct.equals("L")){
for(int i = index;i>=0;i--){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i<index){
discNumber+= Math.abs(discList.get(i)-discList.get(i+1));
}
}
discNumber+= Math.abs(discList.get(index+1) - discList.get(minindex));
for(int i = index+1;i<discList.size();i++){
System.out.println("访问了"+discList.get(i)+"号磁道");
if(i>index+1){
discNumber+= Math.abs(discList.get(i)-discList.get(i-1));
}
}
System.out.println("访问总磁道数为"+discNumber);
}
}
}
Java操作系统磁盘调度算法
需积分: 42 172 浏览量
2017-12-13
16:18:27
上传
评论 1
收藏 7KB RAR 举报
Ricarad
- 粉丝: 1
- 资源: 3
最新资源
- 基于python+flask+mysql实现的豆瓣电影可视化系统源代码+数据库(高分项目).zip
- 基于pytorch卷积神经网络算法识别猫狗图片项目源码+模型+数据集+使用说明.zip
- 基于C++ QT实现的学生信息管理系统源码+项目说明.zip
- IMG20240425152027.jpg
- 点这里下载真实好友等1个文件.rar.zip
- 基于tensorflow同态加密的联邦学习安全聚合系统源码+运行说明.zip
- 七彩祥云丶看的的好运连连
- 土石方工程采用“南方cass”软件计算工程量的.doc
- mmexport1922918815783c336136a3e10a1bae88_1715378948463.png
- 基于51单片机的室内甲醛测试系统.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈