优先数算法c++代码
时间: 2023-08-04 11:17:32 浏览: 36
以下是一个简单的优先数算法的 C++ 代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Process {
int id;
int priority;
int burst_time;
};
bool sortByPriority(Process a, Process b) {
return a.priority > b.priority;
}
int main() {
int n;
cout << "Enter number of processes: ";
cin >> n;
vector<Process> processes(n);
for(int i = 0; i < n; i++) {
cout << "Enter priority and burst time for process " << i+1 << ": ";
cin >> processes[i].priority >> processes[i].burst_time;
processes[i].id = i+1;
}
sort(processes.begin(), processes.end(), sortByPriority);
int total_time = 0;
for(auto p : processes) {
total_time += p.burst_time;
}
vector<int> timeline(total_time, 0);
int current_time = 0;
for(auto p : processes) {
for(int i = 0; i < p.burst_time; i++) {
timeline[current_time++] = p.id;
}
}
cout << "Timeline: ";
for(auto p : timeline) {
cout << p << " ";
}
cout << endl;
return 0;
}
```
该代码中,我们定义了一个 `Process` 结构体来表示进程,包含了进程的 ID、优先级和 CPU 占用时间。我们定义了一个 `sortByPriority` 函数来按照进程的优先级对进程进行排序。在主函数中,我们首先读入进程的数量和每个进程的优先级和 CPU 占用时间,然后按照优先级对进程进行排序。接下来,我们计算出所有进程的总 CPU 占用时间,创建一个时间线数组,并按照进程 CPU 占用时间将每个进程的 ID 添加到时间线数组中。最后,我们输出时间线数组以显示进程的执行顺序。