在FCFS调度算法中根据到达时间排序

时间:2018-03-07 08:18:42

标签: c++

我正在研究关于C ++中的调度算法(FCFS)的项目。我需要做的所有事情都是甘特图。这是一个例子:

gantt chart example

如果只是到达时间我可以排序,但我对如何根据到达时间对进程ID进行排序感到困惑。

这是我尝试根据到达时间对进程ID进行排序。

for (i=0; i<n-1; i++){
     for (j=0; j<n-i-1; j++){
            if (at[i]>at[i+1]){
                temp = pid[i+1];
                pid[i+1] = pid[i];
                pid[i] = temp;
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

只是众多实现中的一个,可以给出答案

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

class Process {
public:
    Process(std::string name, size_t pid) : name(name), pid(pid) {}
    std::string name {"default"};
    size_t pid {0};
};

int main() {
    std::vector<Process> v {
        Process {"p1", 1}, Process {"p2", 2}, Process {"p6", 6},
        Process {"p3", 3}, Process {"p0", 0}
    };

    std::sort(
        v.begin(),
        v.end(),
        [](const Process & a, const Process & b) -> bool {
            return a.pid > b.pid;
        }
    );

    for (auto value : v)
        std::cout << value.name << ": " << value.pid << std::endl;
}

输出:

enter image description here

答案 1 :(得分:0)

您可以使用STL以更简单的方式解决问题,而无需使用2个循环

['created', 'edited', 'published', 'rejected', 'unpublished']

}