降序排序算法
- 开源代码
- 2025-09-07 20:42:01

代码展示 #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; struct Student { string name; int score; Student(){} Student(string n,int s):name(n),score(s){} }; bool compare_score(Student x,Student y) { return x.score > y.score; } int main() { Student stu[3]; string n; int s; for (int i=0;i<3;i++) { cin >> n >> s; stu[i] = Student(n, s); } sort(stu,stu+3, compare_score); for (int i = 0; i < 3; i++) { cout << stu[i].name << " " << stu[i].score << endl;; } return 0; } 代码结构
结构体定义:
struct Student { string name; int score; Student(){} Student(string n,int s):name(n),score(s){} }; Student 结构体包含两个成员变量:name(学生姓名)和 score(学生成绩)。提供了两个构造函数:一个默认构造函数和一个带参数的构造函数,用于初始化 name 和 score。比较函数:
bool compare_score(Student x, Student y) { return x.score > y.score; } 这是一个自定义的比较函数,用于比较两个 Student 对象的 score 成员。返回 true 表示 x 的成绩高于 y 的成绩,这样在排序时会将成绩高的学生排在前面。主函数:
int main() { Student stu[3]; string n; int s; for (int i = 0; i < 3; i++) { cin >> n >> s; stu[i] = Student(n, s); } sort(stu, stu + 3, compare_score); for (int i = 0; i < 3; i++) { cout << stu[i].name << " " << stu[i].score << endl; } return 0; } 定义了一个包含 3 个 Student 对象的数组 stu通过循环输入每个学生的姓名和成绩,并存储在 stu 数组中 ,使用 sort 函数对 stu 数组进行排序,排序依据是 compare_score 函数,最后,输出排序后的学生信息。 代码逻辑输入阶段:用户输入三个学生的姓名和成绩,程序将这些信息存储在 stu 数组中。
排序阶段:使用 sort 函数对 stu 数组进行排序,排序的依据是学生的成绩,从高到低排列。
输出阶段:输出排序后的学生信息,显示每个学生的姓名和成绩。
写者心得通过调用标准算法库,排序算法对于c++来说并不困难,之所以特意写文章来介绍这段代码,因为这种框架对于后续的算法扩充,还有新算法的介入有着很大的帮助,就比如如果增加学生姓名的排序或者在同分数排序后再加入学生姓氏的排序,就只需要在这样框架上面增加一部分的程序就足够了。