问题
算法思想
使用冒泡排序
- 输入n代表参加评选的学生人数 ;依次输入n名同学的语文、数学、英语成绩;计算n名同学的总分,学号
- if j的总分小于j+1的总分||j的总分等于j+1的总分并且j的语文小于j+1的语文||j的总分等于j+1的总分并且j的语文等于j+1的语文并且j的学号小于j+1的学号,交换j与j+1的语文、数学、英语、总分和学号;
- 分别输出n名同学的学号、总分。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[300],b[300],c[300],total[300],id[300];//语文、数学、英语、总分、学号
for(int i=0;i<n;i++){
cin>>a[i]>>b[i]>>c[i];
total[i]=a[i]+b[i]+c[i];
id[i]=i+1;
}
for(int i=0;i<n;i++){//n趟
for(int j=0;j<n;j++){//一趟冒泡排序
if((total[j]<total[j+1])||(total[j]==total[j+1]&&a[j]<a[j+1])||(total[j]==total[j+1]&&a[j]<a[j+1]&&id[j]<id[j+1])){
swap(a[j],a[j+1]);
swap(b[j],b[j+1]);
swap(c[j],c[j+1]);
swap(total[j],total[j+1]);
swap(id[j],id[j+1]);
}
}
}
for(int i=0;i<5;i++){
cout<<id[i]<<" "<<total[i]<<endl;
}
return 0;
}

收获
冒泡排序要用双层for循环
该博客介绍了一种使用冒泡排序算法对学生语文、数学、英语成绩进行排序的方法。程序首先读取每个学生的成绩并计算总分,然后通过两层循环实现冒泡排序,确保成绩高的学生排名靠前。最后,程序输出前五名学生的学号和总分。这个例子突出了冒泡排序在处理数据排序问题上的应用。

被折叠的 条评论
为什么被折叠?



