1.简单的sort使用
必须加入头文件#include< algorithm >和using namespace std;
使用如下:
sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(选填));
(1)对于整数(double型同理)
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[4]={9,5,12,-1};
sort(a,a+3);//仅对3个数排序
for(int i=0;i<4;i++)
cout<<a[i]<<" "<<endl;
sort(a,a+4);//对4个数排序
for(int i=0;i<4;i++)
cout<<a[i]<<" ";
}
输出结果
5 9 12 -1
-1 5 9 12
注意体会尾元素地址的下一个地址
(2)对char型数组排序(默认为字典序)
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char c[]={'B','D','C','A'};
sort(c,c+4);
for(int i=0;i<4;i++)
cout<<c[i];
return 0;
}
输出结果
ABCD
2.实现比较函数cmp
(1)基本数据型数组的排序
由上文可以发现,sort默认按照由小到大排序
若想由大到小,则要使用比较函数cmp
如对char型从大到小排序
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(char a,char b){
return a>b;
}
int main()
{
char c[]={'B','D','C','A'};
sort(c,c+4,cmp);
for(int i=0;i<4;i++)
cout<<c[i];
return 0;
}
DCBA
(2)结构体数组的排序
示例如下:
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int a,b;
}ssd[10];
bool cmp(node x,node y){
return x.a>y.b;//按a值由大到小排列
}
int main()
{
ssd[0].a =2;//{2,2}
ssd[0].b =1;
ssd[1].a =1;//{1,3}
ssd[1].b =3;
ssd[2].a =3;//{3,5}
ssd[2].b =5;
sort(ssd,ssd+3,cmp);
for(int i=0;i<3;i++)
cout<<ssd[i].a<<" "<<ssd[i].b<<endl;
return 0;
}
输出结果
3 5
2 2
1 3