结构体排序 sort排序

发布时间 2023-05-30 23:36:51作者: 什么时候才能不困

首先,在学习c的时候,应该学了很多排序方法吧,类似于冒泡排序呀,选择排序,插入排序,快排呀等等,但是,在c++中,有一个很好的排序就是sort排序,在stl里面,sort排序可以说,无论是时间复杂度还是空间复杂度,都是很优化的,这就足以见证sort排序的强大了,也说明sort排序的重要性。

在C++中使用sort()函数需要使用#include<algorithm>头文件,算法的常用头文件,不过多解释啦,当然,你写万能头文件也是可以的;

sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。比如我们对一个整型数组进行从大到小排序:

#include<iostream>
#include<algorithm>
using namespace std;

bool cmp(int x,int y){
    return x> y;
}

int main(){
    int num[10] = {65,59,96,13,21,80,72,33,44,99};
    sort(num,num+10,cmp);
    for(int i=0;i<10;i++){
        cout<<num[i]<<" ";
    }//输出99 96 80 72 65 59 44 33 21 13
    
    return 0;
    
} 
sort排序(有大到小,cmp)

当然,这只是最基础的,cmp的用法常常是对结构体进行排序,比如说给了你一个结构体来存储学生的信息,按照成绩来排序,那么这个时候就需要用cmp排序啦;

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct Student {
    string name;
    int score;
};//学生的结构体

bool cmp(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 >>stu[i].name >> stu[i].score;
    }
    sort(stu, stu + 3, cmp);
    for (int i = 0; i < 3; i++) {
        cout << stu[i].name << " " << stu[i].score << endl;
    }

    return 0;
}
cmp结构体排序

好啦,这里,是不是对sort排序有了一个大致的了解啊。