结构体排序 sort排序

Posted haggard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体排序 sort排序相关的知识,希望对你有一定的参考价值。

首先,在学习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排序有了一个大致的了解啊。

qsort 与sort 对结构体排序实例

qsort 与sort 对结构体排序实例

#include<bits/stdc++.h>
using namespace std;

typedef struct {
    string book;
    int num;
}Book;

//qsort的比较函数
int cmp(const void * a, const void * b) {
    return (*(Book*)a).num > (*(Book*)b).num ? 1 : 0;
}

//sort的比较函数
bool cmp_(Book a, Book b) {
    return a.num > b.num;
}


int main() {
    Book Bok[3] = { {"1",4},{"2",2},{"3",3} };


    cout << endl << "----------------" << "qsort函数" << endl;
    qsort(Bok, 3, sizeof(Bok[0]),cmp);

    for (auto i : Bok) {
        cout << i.num << endl;
    }

    cout << "----------------" << "sort函数" << endl;
    sort(Bok, Bok + 3, cmp_);

    for (auto i : Bok) {
        cout << i.num << endl;
    }

    return 0;
}

以上是关于结构体排序 sort排序的主要内容,如果未能解决你的问题,请参考以下文章

c++ sort 函数能对类或者结构体进行排序吗

求教一个问题,如何用sort对结构体数组排序

用vector开的结构体数组,能否用sort排序

结构体排序 sort排序

qsort 与sort 对结构体排序实例

结构体排序