sort排序
sort()函数:对数组进行排序。
sort()函数在algorithm头文件中,注意,他的排序范围是[first,last),包括first,不包括last。
sort()函数有三个参数:第一个是数组的起始地址;第二个是数组的结束地址;第三个是如何排序(从大到小或从小到大)。
一、 没有第三个参数默认的是从小到大排序
代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=1e5+10;
int p[N];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&p[i]);
sort(p,p+n);
for(int i=0;i<n;i++)
printf("%d ",p[i]);
return 0;
}
二、实现从小到大排序
代码如下(示例):
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=1e5+10;
int p[N];
bool cmp(int x,int y)//比较函数实现从大到小排序
{
return x>y;
}
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&p[i]);
sort(p,p+n,cmp);
for(int i=0;i<n;i++)
printf("%d ",p[i]);
return 0;
}
2、sort函数实现字符串的排序(根据长度,字母顺序两种情况)
(1)sort函数对字符数组排序
代码如下(示例):
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
bool cmp(char a,char b)///比较函数
{
return a>b;
}
int main()
{
char a[100];
scanf("%s",a);
sort(a,a+strlen(a));///从小到大排序
cout<<a<<endl;
sort(a,a+strlen(a),cmp);///从大到小排序
cout<<a<<endl;
}
(2)sort函数对string内的字符进行排序(string为字符串类型数据)
代码如下(示例):
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
bool cmp(char a,char b)///比较函数
{
return a>b;
}
int main()
{
string s;
cin>>s;
sort(s.begin(),s.end());///从小到大
cout<<s<<endl;
sort(s.begin(),s.end(),cmp);///从大到小
cout<<s<<endl;
}
(1)sort函数对字符串数组排序
代码如下(示例):
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
bool cmp(string a,string b)
{
return a>b;
}
int main()
{
int i,j;
string s[5]={"aaa","bb","cccccc","dddd","ff"};
sort(s,s+5);
for(i=0;i<5;i++)
cout<<s[i]<<endl;
cout<<endl;
sort(s,s+5,cmp);
for(i=0;i<5;i++)
cout<<s[i]<<endl;
return 0;
}