欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

排序

程序员文章站 2022-05-12 17:26:38
...

#排序—sort()

使用方式:
(1)需要头文件#include和 using spacename std;
(2)sort(首元素的地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填))
说明:比较函数------cmp
-------------如果不写比较函数,则默认对给出的区间进行递增排序

基本数据类型的排序:(int ,double,char)常见的

#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int  a[]={1,3,7,5};
    sort(a,a+4,cmp);
    for(int i=0;i<4;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

排序

结构体数组的排序

#include<cstdio>
#include<algorithm>
using namespace std;
struct node{
    int x,y;
}ssd[6];
bool cmp(node a,node b)//按照x值从大到小对结构体数组进行排序,需要注意的是y的值会跟x位置的变化而变化
{
    return a.x>b.y;
}
int main()
{
    ssd[0].x=2;//{2,2}
    ssd[0].y=2;
    ssd[1].x=1;//{1,3}
    ssd[1].y=3;
    ssd[2].x=3;//{3,1}
    ssd[2].y=1;
    sort(ssd,ssd+3,cmp);
    for(int i=0;i<3;i++)
    {
       printf("%d %d\n",ssd[i].x,ssd[i].y);
    }
}

排序

如果想先按照x的值由大到小进行排序,但是当x的值相等的情况下,按照y的大小从小到大来排序,那么cmmp的写法是:代码如下–

bool cmp(node a,node b)
{
    if(a.x!=b.x)
    {
        return a.x>b.y;
    }
    else
    {
        return a.y<b.y;
    }
}

容器的排序

#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    vector<int> vi;
    vi.push_back(3);
    vi.push_back(1);
    vi.push_back(2);
    sort(vi.begin(),vi.end(),cmp);
    for(int i=0;i<3;i++)
    {
        printf("%d ",vi[i]);
    }
    return 0;
}

排序

字符串的排序

#include<algorithm>
#include<bits/stdc++.h>
#include<string>
using namespace std;
bool cmp(string a,string b)
{
	return a>b;
}
int main()
{
    string str[3]={"bbb","cc","aaa"};
    sort(str,str+3,cmp);
    for(int i=0;i<3;i++)
    {
       cout<<str[i]<<endl;
    }
    return 0;
}

排序