结构体排序

冒泡排序实在费时费力,sort却可以轻松解决。

Sort函数需要三个参数:排序数组起始地址,结束的地址(最后一位要排序的地址的下一地址),排序的方法。可以不写第三个参数,此时默认的排序方法是从小到大排序。也可以自定义排序方法。

而结构体多级排序时有要求有你自定义的比较函数。比较函数也可以拥有不同的写法。

https://www.cnblogs.com/yspworld/p/4328590.html

struct A{
    string s;
    int sum;
};
 
bool cmp(A a,A b)
{
    if(a.sum == b.sum)
    {
        return a.s <b.s;
    }     \\二级比较
    return a.sum > b.sum;
}

第二种写法借用了别人的代码

https://blog.csdn.net/hbhhhxs/article/details/88771653

struct Person
{
    string name;
    int hegh;
};
bool cmp(Person p1,Person p2)
{
    if(p1.hegh>p2.hegh)//一级排序
    {
        return true;
    }
    else
    {
        if(p1.hegh==p2.hegh)
        {
            if(p1.name<p2.name)//二级排序
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
}

如需要更多级的比较加入新的if-else即可。

https://www.cnblogs.com/bewolf/p/4442441.html
可以借鉴学习

你可能感兴趣的:(c++)