C++ sort()排序

C++中的sort()函数:

sort()函数在头文件algorithm中,也可使用万能头文件bits/stdc++.h

sort()可对普通数组和vector动态数组排序

sort()对普通数组排序:

int arr[10];//double, string等等都可以sort(arr,arr+10);//从小到大排序

arr: 数组地址 arr+10: 数组尾部
注意:数组长度是10,所以要+10,不是9
同理,从第二个元素排到第五个元素就是sort(arr+1,arr+5),
2-5 1-5 5-1=4
9 8 7 6 5 4 3 2 1 0 ——> 9 5 6 7 8 4 3 2 1 0 自己慢慢体会

sort()对vector动态数组排序:

vector<int>v;// double, string等等都可以sort(v.begin(),v.end());//从小到大排序

C++中使用sort()自定义cmp函数:

sort()排序默认是从小到大的,如果想从大到小排怎么办呢?
或者想给结构体数组排序,按照几个不同优先级的关键字进行排序呢?

int cmp(int a,int b)
{
	return a>b;//从大到小排序,a<b就是从小到大排序,注意是大于小于,不带等于
}

int main()
{
	int arr[10];//double, string等等都可以sort(arr,arr+10,cmp);//从小到大排序
}

第二种方法:sort(arr,arr+10,greater<int>());//从大到小排序

对结构体排序:

struct s{
	int id;
	int score;
};

按score从大到小排序,score相同时按id从小到大排序

int cmp(s a,s b)
{
	if(a.score==b.score)
	{
		return a.id<b.id;
	}
	return a.score>b.score;
} 

int main()
{
	s stu[10];sort(stu,stu+10,cmp);
}

注意:对字符数组 char [ ] 排序要用return strcmp(s1,s2)<0或>0

典型例题:

20200217训练赛题目 L1 – 2 部分排序,L2 – 2 模拟EXCEL排序

发布了73 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/l503301397/article/details/104365959