sort函数经常在算法题中被使用,这里对其用法进行总结:
一、需要使用头文件#include<algorithm>和using namespace std;
二、语法:sort(begin,end,cmp),cmp参数可以省略,默认按升序排序。
1)begin是要排序的数组的起始地址。
2)end是最后一位要排序的地址。 3)第三个参数是排序的方式,可以是从大到小也可是从小到大,省略时默认的排序方法是从小到大排序。
三、使用时:
1、数组的使用:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int cmp(int a,int b) {
if(a>b)
return 1; //返回值为1时表示a排列在b前
else
return 0;
}
int main()
{
int a[5]={1,7,2,5,10};
sort(a,a+5);//默认升序排序,输出1,2,5,7,10
for(int i=0;i<5;i++)
cout<<a[i]<<' ';
sort(a,a+5,cmp);//指定降序排序,输出10,7,5,2,1
for(int i=0;i<5;i++)
cout<<a[i]<<' ';
return 0;
}
2、string类型的使用:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string str="algorithm";
sort(str.begin(),str.end());//结果:空格aghilmort
cout<<str;
return 0;
}
3、vector的使用:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int cmp(int a,int b) {
if(a>b)
return 1; //返回值为1时表示a排列在b前
else
return 0;
}
int main () {
int a[] = {1,7,2,5,10};
vector<int> v (a, a+5);
sort (v.begin(),v.begin()+3); //(1,2,7),5,10
sort (v.begin(),v.end(),cmp); //10,7,5,2,1
cout << "vector sort:";
for (vector<int>::iterator it=v.begin(); it!=v.end(); ++it)
cout << ' ' << *it;
cout << '\n';
return 0;
}
4、结构体的使用:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct s{
int a;
int b;
};
bool cmp(s x,s y)
{
if(x.a==y.a)
return x.b>y.b;
return x.a>y.a;
}
int main()
{
s x[5];
for(int i=0;i<5;i++)
cin>>x[i].a>>x[i].b;
sort(x,x+5,cmp);
for(int i=0;i<5;i++)
cout<<x[i].a<<' '<<x[i].b<<endl;
return 0;
}