最短寻道优先算法----SSTF算法
2017-04-13 21:20
232 查看
请珍惜小编劳动成果。该文章为小编原创,转载请注明出处。
该算法选择这种进程。其要求訪问的磁道与当前磁头所在的磁道距离近期。以使每次的寻道时间最短
java代码实现例如以下:
測试:
该算法选择这种进程。其要求訪问的磁道与当前磁头所在的磁道距离近期。以使每次的寻道时间最短
java代码实现例如以下:
import java.util.List; import java.util.Scanner; //最短寻道时间优先 public class SSTF { private int shortIndex=0; private int visit[]; //訪问序列 public int[] sstf(int data[],int begin){ int nearest=99999; //近期的值,变量 visit=new int[data.length]; for(int j=0;j<data.length;j++){ for(int i=0;i<data.length;i++){ if(data[i]!=-1){ if(Math.abs(nearest-begin)>Math.abs(data[i]-begin)){ nearest=data[i]; shortIndex=i; } } } visit[j]=nearest; data[shortIndex]=-1; begin=nearest; nearest=99999; } return visit; } public void print(int visit[],int begin){ for(int i=0;i<visit.length;i++){ System.out.print(visit[i]+" "); } int length=0; for(int i=0;i<visit.length-1;i++){ length+=Math.abs(visit[i]-visit[i+1]); } length+=Math.abs(begin-visit[0]); System.out.println("平均寻道长度为"+length/visit.length); } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入请求个数"); int num=scanner.nextInt(); System.out.println("请输入请求序列。空格隔开"); int data[]=new int[num]; for(int i=0;i<num;i++){ data[i]=scanner.nextInt(); } SSTF sstf=new SSTF(); System.out.println("请输入起始头位置"); int begin=scanner.nextInt(); sstf.print(sstf.sstf(data,begin),begin); } //98 183 37 122 14 124 65 67 }
測试:
相关文章推荐
- 最短寻道优先算法----SSTF算法
- 最短寻道优先算法----SSTF算法
- 模拟最短寻道时间优先SSTF算法
- 广度优先搜索算法-计算最短距离
- [置顶] Java模拟最短作业优先、时间片轮转、最高响应比三种进程调度算法
- 最短作业优先算法
- [2017/05/18]操作系统调度算法--最短剩余时间优先算法的模拟实现
- 宽度搜索优先算法搜索迷宫最短距离
- 操作系统算法——磁盘调度——最短路径优先、电梯调度
- 随机生成图,dijkstra算法求最短路径,深度、广度优先历遍【待更新其他算法】
- Dijkstra单源最短路径算法; 优先队列+静态数组邻接表; STL优先队列还是没想明白排序原则;
- 最短作业优先算法SJF,求平均等待时间
- 假设系统按单值方式运行且采用最短作业优先算法,有J1,J2,J3,J4共4个作业同时到达,则以下哪几种情况下的平均周转时间为10分钟?
- 证明SJF(Shortest Job First:最短作业优先算法)策略生成的调度方案理论最优
- 最短路径算法
- Java实现最短作业优化算法 (SJF算法)
- 图的搜索算法之广度优先搜索
- 实用算法实现-第 21 篇 每对顶点间的最短路径
- 机器寻径引导算法(最短路径表)__深搜、栈