C++ 关于sort

来源:互联网 发布:blct升级数据 编辑:程序博客网 时间:2024/05/17 04:50

sort 头文件 #include< algorithm >
+ using namespace std;

1.一维数组排序

#include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;bool cmp(int a,int b)//如果是double型的,参数改为double a,double b{    return a<b;//升序}int main(){    int a[100];    int i;    int n;    scanf("%d",&n);    for(i=0;i<=n-1;i++)        scanf("%d",a+i);    sort(a,a+n,cmp);//如果不加被调函数名字,sort(a,a+n)代表默认升序排序    for(i=0;i<=n-1;i++)        printf("%d ",a[i]);}

2.多个字符串排序

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>using namespace std;bool cmp(char *a,char *b){    return strcmp(a,b)<0;//如果排的是字符串长度 return strlen(a)<strlen(b);}int main(){    char s[100][100];    char *p[100];    int i;    int n;    scanf("%d",&n);    getchar();    for(i=0; i<=n-1; i++)    {        gets(s[i]);        p[i]=s[i];    }    sort(p,p+n,cmp);    for(i=0; i<=n-1; i++)        printf("%s\n",p[i]);}

3.对string类型字符串排序

1> 一维

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<algorithm>using namespace std;bool cmp(char a,char b){    return a<b;}int main(){    string str;    cin>>str;    sort(str.begin(),str.end(),cmp);    cout<<str<<endl;}

2> 二维

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<algorithm>using namespace std;bool cmp(string a,string b){    return a<b;//如果排的是字符串长度 return a.size()<b.size();}int main(){    string str[100];    int n;    cin>>n;    for(int i=0; i<n; i++)        cin>>str[i];    sort(str,str+n,cmp);   for(int i=0; i<n; i++)        cout<<str[i]<<endl;}

4.对结构体进行排序

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>using namespace std;struct node{    int x;    int y;}s[100];bool cmp(struct node p,struct node q)//如果x相等按照y从小到大排序,否则按照x从小到大排序。{    if(p.x==q.x)        return p.y<q.y;    return p.x<q.x;}int main(){    int i;    int n;    scanf("%d",&n);    for(i=0; i<=n-1; i++)        scanf("%d %d",&s[i].x,&s[i].y);    sort(s,s+n,cmp);    for(i=0; i<=n-1; i++)        printf("%d %d\n",s[i].x,s[i].y);}
原创粉丝点击