模板:C++ sort函数

时间:2024-04-03 16:10:51

        sort函数是我认为c++里超级方便的一个函数。本人不是什么大佬,本篇文章就是分享一下目前我学习sort函数的一些心得,当然还是以模板为主,帮助大家理解如何去用sort函数。

模板:

        OK!我们先上模板,本次模板是以int arr[10]数组为例,对arr数组分别进行正序,倒序排序:

#include<iostream>
#include<algorithm>//sort函数的头文件
using namespace std;
int arr[10];

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

int main()
{
	for (int i = 0; i < 10; i++)//输入要排序的数组arr,一共十个数
		cin >> arr[i];
	//从小到大排序
	sort(arr, arr + 10);
	cout << "从小到大排序:";
	for (int i = 0; i < 10; i++)
		cout << arr[i] << ' ';
	cout << endl;

	//从大到小排序
	sort(arr, arr + 10, cmp);
	cout << "从大到小排序:";
	for (int i = 0; i < 10; i++)
		cout << arr[i] << ' ';

	return 0;
}

分析: 

        哎吆,咋写的?这都啥啊意思啊,不着急,我给大家分析一下sort函数的组成:(sort函数的头文件是 #include<algorithm>)

        sort ( 数组的第一个位置,数组的最后一个元素的下一个位置,一个函数) 主要由这三部分组成,下面分别给大家分析一下三个部分。

        第一部分:我们以一个int数组arr为例,int arr[10] 这个数组有十个数,下标是0到9,那么排序这个数组我们怎么写第一部分呢,就是 arr 即可,因为我们只写一个数组名的话就默认是数组的第一个元素位置。就是这样 sort ( arr,数组的最后一个元素的下一个位置,一个函数)

        第二部分,我们还是以arr数组为例,我们要放入最后一个元素的下一位对吧,那最后一位元素是啥呢,是arr[9]对吧,那也可以写成 arr+9,那最后一个元素的下一位呢?就是 arr+10. 就是这样: sort ( arr,arr+10,一个函数) ,为了记忆方便,我们可以理解成arr后边加上数组的元素个数。   我这里是从arr[0]开始排序的,所以是arr arr+10,但是如果大家是从arr[1]开始输入,那么arr是不是就只有9个元素了,那么就是 sort(arr+1,arr+1+9,一个函数),其中的9指的还是元素的个数。

        第三部分,是写一个函数,那么这个函数的作用是什么呢,我们可以理解成是一个要求函数,就是用来要求sort是按照从大到小排序还是从小到大排序的一个函数。具体怎么写呢,我们一般把这个函数写作 cmp ,那就是这样sort ( arr,arr+10,cmp) 如果大家想把arr按照从小到大排序,那么是不用写cmp这一部分的,就是这样:sort ( arr,arr+10)这样就可以实现把arr从小到大排序了。如果从大到小呢?那就需要写cmp函数了。

        我们来分解一下cmp函数:模板是这样的:

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

        给大家分析一下,首先cmp函数一定要写成bool型,然后传入的int a,int b(这里是因为arr是int型,所以是cmp函数写的是int a,b,如果你的arr是char,或者是结构体类型,这个地方传入的a和b就要做相应的改动)我们可以理解成是arr里相邻的两个数且a在b的前边,而return 后边就是对这相邻两个数的要求,要求a>b,也就是要求前边的数大于后边的数,是不是就实现了从大到小排序了呢。(记得写在主函数之前)

        那这样就完成了sort函数啦,以上只是本人认为可以快速掌握sort函数的思路,可能某些地方和sort的实际含义有些不符,见谅!