p=j;
}
a[p]=a[i];
printf("第%d 次访问的磁道:%d\n",n-i,s);
sum+=k-s;
k=s;
}
else
{
s=a[0];
for(j=0;j<=i;j++)
if(a[j]-k<=s-k)
{
s=a[j];
p=j;
}
a[p]=a[i];
printf("第%d 次访问的磁道:%d\n",n-i,s);
sum+=abs(k-s);
k=s;
}
}
printf("平均寻道长度:%f\n",sum*1.0/n);
}
void SCAN2(int b[],int n,int k)
{
//循环算法
int i,j,s,sum=0,p,biaoji;
int a[20];
for(i=0;i=0;i--)
{
biaoji=0;
for(j=0;j<=i;j++)
if(a[j]-k>0)
{
biaoji=1;
p=j;
break;
}
if(biaoji==1)
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
{
}
}
}
printf("请输入当前的磁道号:");
scanf("%d",&now);
if(array[m-1]<=now)//判断整个数组里的数是否都小于当前磁道号
{
printf("CSCAN 调度结果:
for(i=0;i
=now)//判断整个数组里的数是否都大于当前磁道号
{
printf("CSCAN 调度结果:
for(i=0;ifor(j=l;j>=0;j--)
{
printf("%d
",array[j]);
}
for(j=m-1;j>=r;j--)
{
printf("%d
",array[j]);
}
sum=2*(array[m-1]-array[0])-array[r]+now;//计算移动距离
}//磁道号减小方向
else
{
for(j=r;j