sort函数使用说明(C++)

本文详细介绍了C++中algorithm头文件内的sort函数使用方法,包括如何进行升序和降序排序。示例代码展示了如何自定义排序规则以及使用less和greater函数模板进行排序。此外,还提及了sort函数在处理字符数组排序中的应用。
摘要由CSDN通过智能技术生成

讲解一下C++中 algorithm头文件下sort()函数的使用。

sort()知识:

1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!

2.sort函数有三个参数:

(1)第一个是要排序的数组的起始地址。

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

3.sort函数使用模板:
sort(start,end,排序方法)
注意:sort函数中若没有第三个参数,默认实现的是从小到大排序

(1)自己编写告诉程序执行何种排序的原则的函数

代码1:

#include <iostream>
#include <algorithm>
using namespace std;
const int N=100010;
int a[N];
bool cmp1(int a,int b)  //降序排序 
{
	return a>b;
}
bool cmp2(int a,int b)   //升序排序 
{
	return a<b;
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		a[i]=i+1;
	}
	
	while(m--)
	{
		int p,q;
		cin>>p>>q;
		if(p==0)
		sort(a,a+q,cmp1);
		if(p==1)
		sort(a+q-1,a+n,cmp2);  //需注意这里要填写的首地址要-1 
		/*for(int i=0;i<n;i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<endl;*/
	}
	
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" "; 
	}
	return 0;
} 

(2)c++标准库强大的功能完全可以解决这种麻烦

less<数据类型>()//从小到大排序

greater<数据类型>()//从大到小排序

代码2:

#include <iostream>
#include <algorithm>
using namespace std;
const int N=100010;
int a[N];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		a[i]=i+1;
	}
	
	while(m--)
	{
		int p,q;
		cin>>p>>q;
		if(p==0)
		sort(a,a+q,greater<int>());  //greater 为从大到小排序 
		if(p==1)
		sort(a+q-1,a+n,less<int>());  //less   为从小到大排序 
		/*for(int i=0;i<n;i++)
		{
			cout<<a[i]<<" ";
		}*/
		cout<<endl;
	}
	
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" "; 
	}
	return 0;
} 

拓展:
利用sort函数还可以实现对字符的排序,排序方法大同小异

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	 char a[11]="asdfghjklk";
	 for(int i=0;i<10;i++)
	 cout<<a[i]<<endl;
	 
 	 sort(a,a+10,greater<char>());
 	 
	 for(int i=0;i<10;i++)
	 cout<<a[i]<<endl;
 	 return 0;
}

总结:
利用sort()函数排序时除了需注意排序方法的书写外,还需要注意sort要排序数组起始位置和终止位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值