sort()排序

1. 一维整数数组排序

  利用sort(数组起始位置,数组终止位置的下一位,排序方法)(其中排序方法可以不写)对一维数组进行排序,如果不写排序方法,会自动默认为从小到大。我先演示一哈不写排序方法的结果

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

int main(){
    //声明并定义一个无序数组
    int num[] = {1, 5, 2, 9, 11, 6, 7};
    //计算出数组的长度
    int length = sizeof(num)/sizeof(int);
    //对数组进行排序
    sort(num, num + length);
    for(int i : num)
        printf("%d  ", i);
}

运行结果(看嘛,一眼就可以看出的从小到大)
在这里插入图片描述
  这个时候就有人要问了“要是我想从大到小排怎么办?”那就写排序方法撒。我们写一个函数,名称为“cmp”,我们设计成如果比较的两者前者大于后者就返回true,反之false。这样就可以实现从大到小排序。

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

bool cmp(int A, int B){
    return A > B;
}

int main(){
    //声明并定义一个无序数组
    int num[] = {1, 5, 2, 9, 11, 6, 7};
    //计算出数组的长度
    int length = sizeof(num)/sizeof(int);
    //对数组进行排序
    sort(num, num + length, cmp);
    //输出排序后的结果
    for(int i : num)
        printf("%d  ", i);
}

2. 结构体排序

  我们知道了可以自己写判断谁大谁小的函数之后,我们就可以自己写这么一个函数,将其作为sort()的最后一个参数。假设这个时候我们需要对结构体进行排序,但是结构体可能带有多个参数。下面我们定义了一个带有姓名和年龄的学生类型的结构体。

//定义一个student类型,存储学生的姓名和年龄
struct student{
    string name;
    int age;
};

再自己创建几个数据进行排序

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

//定义一个student类型,存储学生的姓名和年龄
struct student{
    string name;
    int age;
};
//利用cmp方法编写排序规定,这里我们根据年龄从小到大排序,如果年龄相同则按照姓名由大到小排序
bool cmp(student A, student B){
    if(A.age != B.age)  //判断年龄是否相同
        return A.age < B.age;
    return A.name > B.name;
}

int main(){
    //创建一个装有4个学生姓名和年龄的数组
    student s[4];
    s[0].name = "WangLei";   s[0].age = 20;
    s[1].name = "XiaoWang";    s[1].age = 20;
    s[2].name = "LiGang";     s[2].age = 18;
    s[3].name = "ZhangSan";   s[3].age = 9;
    //对数组进行排序
    sort(s, s+4, cmp);
    //输出排序后的结果
    for(student i : s)
        cout<< i.name << " " << i.age << endl;
}

End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红糖毛血旺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值