C++ · sort排序函数讲解

在开始之前,我们来看一道题目

题目描述

给出若干个整数,并输出(排序,从大到小)

输入样例

5 8 9 6 4 2 3 7 1 10

输出样例

10 9 8 7 6 5 4 3 2 1

代码实现

首先,讲解一下排序函数sort的应用

sort(开始位置,结束位置,参数)

C++语言默认将小的数排在前,如果要将大的数排在前,必须要加上参数:

sort(a,a+10,greater<int>());

这样就是从大到小排序了

当然,如果把参数写成这样:

sort(a,a+10,less<int>());

程序就会从小到大排序了


好,现在相信大家对这道题目有一定的思路了,我们来写写代码

#include <bits/stdc++.h>
using namespace std;

int main ()
{
    
    
	int a[10]; //定义变量
	for(int i=0;i<10;i++){
    
    
		cin>>a[i]; //循环输入
	}
	sort(a,a+10,greater<int>()); //sort排序,开始位置默认+0
	//比如:sort(a+0,a+10,greater<int>()); 也是对的
	for(int i=0;i<10;i++){
    
    
		cout<<a[i]<<' '; //输出
	}
    return 0;
}

运行结果:

test1
那有没有一种更简单的方法呢?
当然有

我们可以写一个布尔类型的函数,返回值为True,把a排在b前面;返回值为False,把b排在a前面

bool cmp(int a,int b){
    
    
	return a>b;
}

然后,只要在sort函数里面填上cmp参数就可以了

sort(a,a+10,cmp);

完整代码:

#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
    
    
	return a>b;
}
int main ()
{
    
    
	int a[10]; //定义变量
	for(int i=0;i<10;i++){
    
    
		cin>>a[i]; //循环输入
	}
	sort(a,a+10,cmp); //sort排序
	for(int i=0;i<10;i++){
    
    
		cout<<a[i]<<' '; //输出
	}
    return 0;
}

test2

总结

sort函数用法:
sort(开始位置,结束位置,参数)

其中,参数可以为less<int>()greater<int>(),还可以是其它自定义的函数

C语言默认的排序顺序:从小到大

从小到大排序用less<int>(),从大到小用greater<int>()

bool cmp(int a,int b){
    
    
	return a>b; //从大到小
	return a<b; //从小到大,也可以写成 return b>a;
}

猜你喜欢

转载自blog.csdn.net/weixin_45122104/article/details/125996916