这里介绍快速排序的应用,C++自带的快速排序函数,能够定义比较复杂的排序规则。每个结构体包含名字、年龄和分数。规则定义:将学生信息按成绩进行排序,成绩相同的则按照姓名的字母序进行排序。然后输出学生信息,按照如下格式:姓名、年龄、成绩。
#include <iostream> #include <algorithm> #include <string.h> using namespace std; struct E{ char name[100]; int age; int score; }buf[100]; //定义排序规则 //先根据得分排序,如果得分一样,则根据名字排序,如果名字一样,则按年纪排序 bool cmp(E x, E y) { if (x.score != y.score) { return x.score < y.score; } else { int tmp = strcmp(x.name, y.name); if (tmp != 0) { return tmp < 0; } else { return x.age < y.age; } } } void main() { int n; while ( scanf("%d", &n) != EOF) { for (int i = 0; i < n; i++){ scanf("%s%d%d", &buf[i].name, &buf[i].age, &buf[i].score); } sort(buf, buf + n, cmp); for (int i = 0; i < n; i++){ printf("%s, %d, %d ", buf[i].name, buf[i].age, buf[i].score); } } }上机笔试系类教程: 【上级笔试之一】数据输入 【上机笔试之二】冒泡排序 【上机笔试之三】快速排序 【上机笔试之四】快速排序(2) 【上机笔试之五】计算两个日期的差值 【上机笔试之六】Hash应用 【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数 【上机笔试之八】二分法查找 【上机笔试之九】贪心算法-换零钱 【上机笔试之十】栈应用-扣号匹配