时间:2021-05-19
sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include<algorithm>的c++标准库中。
题目描述:
有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母排序,如果姓名的字母序也相同,则按照学生的年龄排序,并输出N个学生排序后的信息。
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct E { char name[101]; int age; int score;}buf[1000];bool cmp(E a, E b) { if (a.score != b.score) return a.score < b.score; int tmp = strcmp(a.name, b.name); if (tmp != 0) return tmp < 0; else return a.age < b.age;}int main() { int n; while (scanf_s("%d", &n) != EOF) { for (int i = 0; i < n; i++) { scanf_s("%s%d%d", buf[i].name,sizeof(buf[i].name), &buf[i].age, &buf[i].score); } sort(buf, buf + n, cmp); printf("\n"); for (int i = 0; i < n; i++) { printf("%s %d %d\n", buf[i].name, buf[i].age, buf[i].score); } } return 0;}注意事项
scanf和scanf_s区别使用,scanf_s需要标明缓冲区的大小,因而多出一个参数。 Unlike scanf and wscanf, scanf_s and wscanf_s require you to specify buffer sizes for some parameters. Specify the sizes for all c, C, s, S, or string control set [] parameters. The buffer size in characters is passed as an additional parameter. It immediately follows the pointer to the buffer or variable. For example, if you're reading a string, the buffer size for that string is passed as follows:
char s[10];scanf_s("%9s", s, (unsigned)_countof(s)); // buffer size is 10, width specification is 9微软参考文档
结果
通过运算符重载来实现
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct E { char name[101]; int age; int score; bool operator <(const E &b) const { if (score != b.score) return score < b.score; int tmp = strcmp(name, b.name); if (tmp != 0) return tmp < 0; else return age < b.age; }}buf[1000];int main() { int n; while (scanf_s("%d", &n) != EOF) { for (int i = 0; i < n; i++) { scanf_s("%s%d%d", buf[i].name,sizeof(buf[i].name), &buf[i].age, &buf[i].score); } sort(buf, buf + n); printf("\n"); for (int i = 0; i < n; i++) { printf("%s %d %d\n", buf[i].name, buf[i].age, buf[i].score); } } return 0;}由于已经指明了结构体的小于运算符,计算机便知道了该结构体的定序规则。 sort函数只利用小于运算符来定序,小者在前。于是,我们在调用sort时便不必特别指明排序规则(即不使用第三个参数)。
总结
到此这篇关于通过c++的sort函数实现成绩排序的文章就介绍到这了,更多相关c++ sort函数内容请搜素以前的文章或下面相关文章,希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
numpy.sort()函数该函数提供了多种排序功能,支持归并排序,堆排序,快速排序等多种排序算法使用numpy.sort()方法的格式为:numpy.sort
本文实例讲述了JS简单实现表格排序功能的方法。分享给大家供大家参考,具体如下:思路:遍历每个li,并把它们存放到数组中去,然后通过sort()方法进行排序,再插
本文实例讲述了java实现ArrayList根据存储对象排序功能。分享给大家供大家参考,具体如下:与c++中的qsort的实现极为相似,构建新的比较对象Comp
C语言标准库中没有sort,sort是C++标准库里面的函数,在头文件algorithm中,用于排序。 C语言的数据类型包括:整型、字符型、实型或浮点型(单精
分数排序的特殊问题在java中实现排序远比C/C++简单,我们只要让集合中元素对应的类实现Comparable接口,然后调用Collections.sort()