最短尋道優先演算法瞭解一下
阿新 • • 發佈:2018-12-26
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int a,seed,i,k,j,m=0,running[100],h[100],b[100],max=101,sum=0;
void sstf(int num){
seed=time(0);
srand((unsigned int)seed);
printf("待掃描柱面:");
for(i=0;i<10;i++){
b[i]=rand()%100;
running[i]=1;
printf("%-10d",b[i]);
}
printf("\n初始磁軌: ");
scanf("%d",&a);
printf("訪問序列: ");
for(j=1;j<=10;j++){
for(i=0;i<10;i++){
if(running[i]==1){
if(fabs(max-a)>fabs(b[i]-a)){
max=b[i];
k=i;
}
}
}
h[j]=max;
running[k]=0;
a=max;
max=100;
printf("%-10d",h[j]);
}
printf("\n");
printf("尋道長度: ");
h[0]=a;
for(i=0;i<10;i++){
sum=sum+fabs(h[i+1]-h[i]);
}
printf("%-10d\n",sum);
float aver=sum/10.0;
printf("平均尋道長度: ");
printf("%-10f",aver);
return 0;
}
#include<stdlib.h>
#include<time.h>
#include<math.h>
int a,seed,i,k,j,m=0,running[100],h[100],b[100],max=101,sum=0;
void sstf(int num){
seed=time(0);
srand((unsigned int)seed);
printf("待掃描柱面:");
for(i=0;i<10;i++){
b[i]=rand()%100;
running[i]=1;
printf("%-10d",b[i]);
}
printf("\n初始磁軌: ");
scanf("%d",&a);
printf("訪問序列: ");
for(j=1;j<=10;j++){
for(i=0;i<10;i++){
if(running[i]==1){
if(fabs(max-a)>fabs(b[i]-a)){
max=b[i];
k=i;
}
}
}
h[j]=max;
running[k]=0;
a=max;
max=100;
printf("%-10d",h[j]);
}
printf("\n");
printf("尋道長度: ");
h[0]=a;
for(i=0;i<10;i++){
sum=sum+fabs(h[i+1]-h[i]);
}
printf("%-10d\n",sum);
float aver=sum/10.0;
printf("平均尋道長度: ");
printf("%-10f",aver);
return 0;
}