algorithm头文件下的sort()

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
发布了94 篇原创文章 · 获赞 193 · 访问量 5377

猜你喜欢

转载自blog.csdn.net/weixin_45884316/article/details/104208408