这里介绍快速排序的应用,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大的数
【上机笔试之八】二分法查找
【上机笔试之九】贪心算法-换零钱
【上机笔试之十】栈应用-扣号匹配