zoukankan      html  css  js  c++  java
  • 电梯调度算法的实现

    View Code
      1 class SCAN
      2     {
      3 
      4         static void Main(string[] args)
      5         {
      6             SCAN s = new SCAN();
      7 
      8             int[] a = { 55, 58, 39, 18, 90, 160, 150, 38, 184 };
      9             int nowway = 100;
     10 
     11 
     12             int[] high = s.high(nowway, a);//高磁道
     13             int hl = high.Length;
     14 
     15 
     16 
     17             int[] low = s.low(nowway, a);//低磁道
     18             int ll = low.Length;
     19 
     20 
     21             int[] all = new int[hl + ll];
     22             for (int i = 0; i < hl; i++)
     23             {
     24                 all[i] = high[i];
     25 
     26             }
     27             for (int i = 0, j = 0; i < ll; i++, j++)
     28             {
     29                 all[hl + i] = low[j];
     30             }
     31 
     32 
     33             int[] movelength = new int[all.Length];
     34             for (int i = 0; i < all.Length; i++)
     35             {
     36                 Console.WriteLine(all[i] + "      ");
     37                 int move = 0;
     38                 if (i == 0)
     39                 {
     40                     move = all[0] - 100;
     41                     movelength[i] = move;
     42                     Console.WriteLine("移动磁道数 " + move);
     43                     continue;
     44 
     45                 }
     46                 if (all[i] > all[i - 1])
     47                 {
     48                     move = all[i] - all[i - 1];
     49                     movelength[i] = move;
     50 
     51                 }
     52                 else
     53                 {
     54                     move = all[i - 1] - all[i];
     55                     movelength[i] = move;
     56                 }
     57 
     58                 Console.WriteLine("移动磁道数 " + move);
     59 
     60 
     61             }
     62 
     63             int summovelentgth = 0;
     64             for (int i = 0; i < movelength.Length; i++)
     65             {
     66                 summovelentgth += movelength[i];
     67 
     68 
     69             }
     70             Console.WriteLine("平均寻道长度:" + (double)summovelentgth / movelength.Length);
     71 
     72 
     73 
     74 
     75         }
     76 
     77         
     78         public int[] low(int nowway, int[] a)
     79         {
     80             int mincount = 0;
     81             for (int i = 0; i < a.Length; i++)
     82             {
     83                 if (a[i] < nowway)
     84                 {
     85                     mincount++; //小于磁道数的
     86                 }
     87             }
     88 
     89             int[] a1 = new int[mincount];
     90             int j = 0;
     91 
     92             for (int i = 0; i < a.Length; i++)
     93             {
     94                 if (a[i] < nowway)
     95                 {
     96 
     97                     a1[j] = a[i]; //小于磁道数的
     98                     j++;
     99                 }
    100             }
    101 
    102             Array.Sort(a1);//对小磁道升序排列
    103             int k = a1.Length;
    104             int[] a3 = new int[k];
    105             k--;
    106             for (int i = 0; i < a1.Length; i++, k--)
    107             {   //降序排列
    108                 a3[i] = a1[k];
    109 
    110             }
    111 
    112 
    113             return a3;
    114         }
    115         public int[] high(int nowway, int[] a)
    116         {
    117 
    118             int maxcount = 0;
    119 
    120             for (int i = 0; i < a.Length; i++)
    121             {
    122                 if (a[i] > nowway)
    123                 {
    124 
    125                     maxcount++; //大于磁道数的
    126                 }
    127             }
    128 
    129             int[] a2 = new int[maxcount];
    130             int j = 0;
    131             int m = 0;
    132             for (int i = 0; i < a.Length; i++)
    133             {
    134                 if (a[i] > nowway)
    135                 {
    136 
    137                     a2[m] = a[i]; //大于磁道数的
    138                     m++;
    139                 }
    140             }
    141 
    142             Array.Sort(a2);//对大磁道升序排列
    143             return a2;
    144         }
    145 
    146 
    147 
    148 
    149 
    150     }

    最近加班真是苦啊!!还有一个月回北京

  • 相关阅读:
    将Color的格式转变成颜色值
    F# 学习笔记 1 基础学习
    GridView 72般绝技
    前台直接读取Web.config中的值的方法
    根据属性名称 获取对象的属性值
    字符集与字符编码简介(转)
    一个WinForm程序配置信息的简单模型和维护工具——设计说明
    扩展DLL调用扩展DLL的LINK2001错误的解决办法之一
    CProfile : 读写私有INI配置文件
    日记:如何在MFC中使用Winsock2
  • 原文地址:https://www.cnblogs.com/xinshijie/p/2610682.html
Copyright © 2011-2022 走看看