磁盘算法的主要算法
void scan() //scan算法=电梯算法{
int n,temp;
temp=beginnum;
sort();
cout<<"请选择开始方向:1,向外;0,向里: "<<endl;
cin>>flag;
for(int i=0;i<N;i++) //和当前的磁盘大小分批
{
if(sortcd[i]>=beginnum)
{
n=i;
break;
}
}
if(flag==1) //磁盘方向向外的操作
{
for(int i=n;i<N;i++) //大磁盘号的访问操作
{
movecd[i-n]=abs(sortcd[i]-temp);
temp=sortcd[i];
findcd[i-n]=sortcd[i];
}
for(int j=n-1;j>=0;j--) //小磁盘号的访问操作
{
movecd[N-1-j]=abs(sortcd[j]-temp);
temp=sortcd[j];
findcd[N-1-j]=sortcd[j];
}
}
else
{
for(int j=n;j<N;j++) //大磁盘号的访问操作
{
movecd[j]=abs(sortcd[j]-temp);
temp=sortcd[j];
findcd[j]=sortcd[j];
}
for(int i=n-1;i>=0;i--) //小磁盘号的访问操作
{
movecd[N-i-4]=abs(sortcd[i]-temp);
temp=sortcd[i];
findcd[N-i-4]=sortcd[i];
}
}
}