zoukankan      html  css  js  c++  java
  • 最短寻道优先算法----SSTF算法

    请珍惜小编劳动成果。该文章为小编原创,转载请注明出处。


    该算法选择这种进程。其要求訪问的磁道与当前磁头所在的磁道距离近期。以使每次的寻道时间最短


    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
    }
    


    測试:


  • 相关阅读:
    python 数据类型 基础第二天
    Python基础第一篇
    前言、入门程序、常量、变量
    win10打开移动热点让手机连接上网教程
    win10移动热点问题
    博客园快速美化
    Idea提示没有符号类错误解决
    mybatis复习01
    test
    d190305面试题01总结
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6706162.html
Copyright © 2011-2022 走看看