使用C++实现最短寻道时间优先算法
时间: 2023-08-06 16:01:46 浏览: 115
以下是使用C++实现最短寻道时间优先算法的示例代码:
```c++
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
int main()
{
int n, head, sum = 0;
vector<int> track;
cout << "请输入磁道访问序列长度:";
cin >> n;
cout << "请输入磁道访问序列:";
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
track.push_back(x);
}
cout << "请输入磁头起始位置:";
cin >> head;
track.push_back(head);
sort(track.begin(), track.end());//将访问序列排序
int pos = find(track.begin(), track.end(), head) - track.begin();//找到磁头起始位置
for (int i = pos; i >= 1; i--)//从磁头位置向左遍历
{
sum += abs(track[i] - track[i - 1]);//累加寻道距离
}
for (int i = pos; i < n; i++)//从磁头位置向右遍历
{
sum += abs(track[i] - track[i + 1]);//累加寻道距离
}
cout << "最短寻道时间为:" << sum << endl;
return 0;
}
```
该程序首先输入磁道访问序列长度和磁道访问序列,并要求输入磁头起始位置。然后将磁头起始位置插入到访问序列中,并将访问序列排序。程序通过遍历访问序列,累加相邻磁道之间的寻道距离,以得到最短寻道时间。
阅读全文