#include <iostream> #include<vector> #include<algorithm> using namespace std; class mycompare { public: bool operator()(int s1, int s2) { return s1 > s2; } }; int main() { mycompare mycompare1; int n, m, c; vector<int> v1, v2; cout << "作业个数为:"; cin >> n; cout << "作业时间依次为:" << endl; for (int i = 0; i < n; i++) { cin >> c; v1.push_back(c); } sort(v1.begin(), v1.end(), mycompare1);//作业时间降序排序 cout << "处理机个数为:"; cin >> m; for (int i = 0; i < m; i++) v2.push_back(0); for (int i = 0; i < n; i++) { sort(v2.begin(), v2.end());//处理机完成作业时间升序排列 v2[0] += v1[i];//将作业分配给最先空闲的处理机,并将处理机完成作业时间加上相应作业时间 } cout << "最短处理机时间为:" << *v2.rbegin();该代码的时间复杂度
时间: 2024-03-19 14:40:10 浏览: 51
使用include <iostream>时一定要加using namespace std
这段代码的时间复杂度为O(nmlogm),其中n为作业个数,m为处理机个数。
代码中的排序操作是最耗时的部分,其时间复杂度为O(klogk),其中k为排序的元素个数。在第4步中,我们需要对处理机的完成作业时间进行初始化,时间复杂度为O(m)。在第5步中,我们需要遍历所有作业,并对处理机进行排序和加法操作,时间复杂度为O(nmlogm)。
因此,整个算法的时间复杂度为O(nmlogm)。需要注意的是,虽然时间复杂度不是最优的,但是该算法具有实际应用价值,可以在实际情况中得到较好的效果。
阅读全文