Process temp; for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (p[i].serve_time > p[j].serve_time) { temp = p[i]; p[i] = p[j]; p[j] = temp; }
时间: 2024-02-15 09:27:44 浏览: 100
这段代码是什么意思?
这段代码是一个简单的排序算法,使用的是冒泡排序。它的目的是按照任务的服务时间对任务进行排序。代码中使用了一个结构体数组p,每个元素表示一个任务,其中包含了任务的服务时间。通过嵌套的for循环,遍历所有的任务,如果当前任务的服务时间比后面的任务的服务时间大,就交换它们的位置。这么做的目的是让服务时间短的任务尽可能早地得到执行,以最小化任务的平均等待时间。
相关问题
怎么改进 for(int i=0; i<n; i++) { cout << "作业" << sort_queue[i].name << "-->"; } cout << "over"; cout << "进程完成后具体信息记录:" << endl; cout << "进程\t到达时间\t服务时间\t周转时间\t" << endl; for(int i=0; i<n; i++) { out(temp[i]); ave_aroundtime += temp[i].aroundtime; ave_weight_aroundtime += temp[i].weight_aroundtime; } ave_aroundtime/=n; ave_weight_aroundtime/=n;
可以将输出部分的代码封装成一个函数,以提高代码的可读性和模块化程度。同时,在输出时可以使用格式化输出来使输出更加美观。
例如,可以定义一个名为print_jobs_info的函数,用于输出作业信息和进程完成后的具体信息记录。函数的参数为作业队列sort_queue和已完成的进程信息数组temp。
在函数内部,可以先输出作业队列的信息,然后再输出进程完成后的具体信息记录。具体信息记录的输出可以使用格式化输出,使得每个字段的输出对齐,更加美观。最后,在函数中计算平均周转时间和加权平均周转时间。
修改后的代码如下:
```
void print_jobs_info(const vector<Job>& sort_queue, const vector<Process>& temp)
{
cout << "作业队列:" << endl;
for (int i = 0; i < sort_queue.size(); i++) {
cout << "作业" << sort_queue[i].name << "-->";
}
cout << "over" << endl;
cout << "进程完成后具体信息记录:" << endl;
cout << left << setw(8) << "进程" << setw(12) << "到达时间" << setw(12) << "服务时间" << setw(12) << "周转时间" << endl;
for (int i = 0; i < temp.size(); i++) {
out(temp[i]);
ave_aroundtime += temp[i].aroundtime;
ave_weight_aroundtime += temp[i].weight_aroundtime;
}
ave_aroundtime /= temp.size();
ave_weight_aroundtime /= temp.size();
}
```
将下面c语言代码改为python代码 #include<stdio.h> #include<stdlib.h> struct PROCESS { char PROCESS_NAME[10]; int atime; int rtime; int ttime; int X; float Response_ratio; }; int main() { struct PROCESS p[3]; for (int i=0;i<3;i++) { scanf("%s %d %d",&p[i].PROCESS_NAME,&p[i].atime,&p[i].rtime); p[i].X=i+1; } struct PROCESS temp; int nowtime=p[0].atime; int sign=0; int flag=0; int m=0; int n=0; for(int i=1;i<3;i++) { if(p[i].atime==nowtime) { if(p[i].rtime<p[sign].rtime) { sign=i; nowtime=p[i].atime; temp=p[i]; p[i]=p[0]; p[0]=temp; } } else if(p[i].atime<nowtime) { sign=i; nowtime=p[i].atime; temp=p[i]; p[i]=p[0]; p[0]=temp; } } while (1) { if(p[m].atime>=n) { p[m].ttime=p[m].rtime; n=p[m].atime+p[m].rtime; } else { p[m].ttime=p[m].rtime+n-p[m].atime; n+=p[m].rtime; } for(int i=1;i<3;i++) { p[i].Response_ratio=(float)(n-p[i].atime)/p[i].rtime; } m++; if(m==3) { break; } if(flag==0) { if(p[1].Response_ratio>=p[2].Response_ratio) { if(p[1].Response_ratio==p[2].Response_ratio) { if(p[1].X>p[2].X) { temp=p[1]; p[1]=p[2]; p[2]=temp; } } } else { temp=p[1]; p[1]=p[2]; p[2]=temp; } flag=1; } } for(int i=0;i<2;i++) { for(int j=1;j<3;j++) { if(p[i].X>p[j].X) { temp=p[i]; p[i]=p[j]; p[j]=temp; } } } for(int i=0;i<3;i++) { printf("%d ",p[i].ttime); } }
以下是将C语言代码转换为Python代码后的结果:
```python
class Process:
def __init__(self):
self.PROCESS_NAME = ""
self.atime = 0
self.rtime = 0
self.ttime = 0
self.X = 0
self.Response_ratio = 0.0
p = [Process() for i in range(3)]
for i in range(3):
p[i].PROCESS_NAME, p[i].atime, p[i].rtime = input().split()
p[i].atime = int(p[i].atime)
p[i].rtime = int(p[i].rtime)
p[i].X = i + 1
temp = Process()
nowtime = p[0].atime
sign = 0
flag = 0
m = 0
n = 0
for i in range(1, 3):
if p[i].atime == nowtime:
if p[i].rtime < p[sign].rtime:
sign = i
nowtime = p[i].atime
temp = p[i]
p[i] = p[0]
p[0] = temp
elif p[i].atime < nowtime:
sign = i
nowtime = p[i].atime
temp = p[i]
p[i] = p[0]
p[0] = temp
while True:
if p[m].atime >= n:
p[m].ttime = p[m].rtime
n = p[m].atime + p[m].rtime
else:
p[m].ttime = p[m].rtime + n - p[m].atime
n += p[m].rtime
for i in range(1, 3):
p[i].Response_ratio = (n - p[i].atime) / p[i].rtime
m += 1
if m == 3:
break
if flag == 0:
if p[1].Response_ratio >= p[2].Response_ratio:
if p[1].Response_ratio == p[2].Response_ratio:
if p[1].X > p[2].X:
temp = p[1]
p[1] = p[2]
p[2] = temp
else:
temp = p[1]
p[1] = p[2]
p[2] = temp
flag = 1
for i in range(2):
for j in range(1, 3):
if p[i].X > p[j].X:
temp = p[i]
p[i] = p[j]
p[j] = temp
for i in range(3):
print(p[i].ttime, end=' ')
```
阅读全文