0%

Sort()函数

Sort()函数

sort()为标准库自带排序函数,非常常用。可以让人省去很多时候写排序算法的麻烦。作为快排速度也很快,能满足大多数情况下的使用。

sort()能对数组、结构体、类等多种元素进行排序。

基本

形参表

sort(beg,end,[cmp])

其中begend分别是起始元素和结束元素的地址,cmp是排序方式

1
2
3
4
5
//eg.给数组排序
int a[10]={0};
for(int i=0;i<10;i++)
cin>>a[i];
sort(a,a+10,compare); //a是数组头地址,a+10是a[9]的地址

cmp缺省升序排列(从小到大)。

如果要降序排列,需要写个cmp函数,如下:

1
2
3
4
bool compare1(int a,int b)
{
return a>b; //cmp为true时不交换
}

标准库中也有此类函数,在<functional>中,包括equal_to<Type>not_equal_to<Type>greater<Type>greater_equal<Type>less<Type>less_equal<Type>等,上面写的compare1函数相当于greater<int>

字符串

例子说明一切

1
2
string hhh("jojo");
sort(hhh.begin(),hhh.end());//用迭代器,begin()表示起始地址,end()表示结束地址

结果:“jjoo”

结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<algorithm>
using namespace std;

struct link
{
int a,b;
};

bool cmp(link x,link y) //先比a,a一样再比b
{
if(x.a==y.a)
return x.b>y.b;
return x.a>y.a;
}

int main()
{
link x[4];
for(int i=0;i<4;i++)
cin>>x[i].a>>x[i].b;
sort(x,x+4,cmp);
for(int i=0;i<4;i++)
cout<<x[i].a<<' '<<x[i].b<<endl;
return 0;
}