实验六的SCAN和C-SCAN算法(xjb写的憋照抄啊=。=

void SCAN(int array[],int m){
    int temp;
    int now;
    int pos;
    int i,j,sum=0;
    float avg;
    for(i=0;iarray[j]){ //两磁道号之间比较
                temp=array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
    }
    for( i=0;i= 0; i--) printf("%d ", array[i]);  //翻转方向(向序数小的方向移动)向序数最小的磁道移动
        sum = array[m - 1] - now + (pos ? array[m - 1] - array[0] : 0);/* ( array[m - 1] - now )  : 从最开始在的磁道向最大的磁道移动的距离
                                                                        ( pos ? array[m - 1] - array[0] + array[pos - 1] : 0 )  : 如果最开始在的磁道比要操作的序数最小的磁道还要小就不用翻转方向再移动了 */
    }
    avg=(float)sum/m;
    printf("\n 移动的总道数: %d \n",sum);
    printf(" 平均寻道长度: %f \n",avg);
}

void CSCAN(int array[],int m){
    int temp;
    int now;
    int pos;
    int i,j,sum=0;
    float avg;
    for(i=0;iarray[j]){ //两磁道号之间比较
                temp=array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
    }
    for( i=0;i

你可能感兴趣的:(实验六的SCAN和C-SCAN算法(xjb写的憋照抄啊=。=)