#include<bits/stdc++.h>
using namespace std;
int a[2000]; //磁道位置
int n; //磁道数量
int begin; //初始位置
void init()
{
srand(time(0));
n=(rand()%20)+1; // 0-1000
for(int i=0;i<n;i++)
a[i]=(rand()%20)+1; //0-1000
begin= (rand()%20)+1;
}
int abs(int x)
{
return x<0?-x:x;
}
int er_fen(int b[],int x)
{
int l=0,r=n-1;
//printf("r=%d\n",r);
while(l<=r)
{
int mid=(l+r)>>1;
if(b[mid]>x)
{
r=mid-1;
}
else
l=mid+1;
}
//printf("! %d %d %d\n",x,l,r);
return r;
}
void FCFS() //先来先服务
{
int sum=0;
printf("路径:\n");
printf("%d",begin);
int t=begin; //为了不改变起始点
for(int i=0;i<n;i++)
{
sum+=abs(t-a[i]);
printf(" --> %d",a[i]);
t=a[i];
}
printf("\n");
printf("总移动数: %d\n",sum);
}
void SSTF() //用二分搜索优化 时间复杂度 O(nlogn)
{
int sum=0;
磁盘调度算法(FCFS,SSTF,SCAN)
最新推荐文章于 2023-11-01 21:12:24 发布
本文介绍了磁盘调度中的三种算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)以及电梯调度(SCAN)算法,并通过代码实现展示了它们的工作原理及移动次数计算。通过对随机生成的磁道位置进行模拟,分析了不同算法的性能特点。
摘要由CSDN通过智能技术生成