【学习笔记】sort函数

基本介绍

sort函数是c++一种排序方法之一,相较冒泡排序和选择排序所带来的执行效率不高的问题,sort函数使用的排序方法是类似于快速排序的方法,时间复杂度为n*log2(n),执行效率较高,sort函数包含在头文件为#include<algorithm>的c++标准库中,因此在使用该函数前,程序中应包含如下语句:

#include<algorithm>

sort函数有三个参数:sort(start,end,cmp),start表示要排序数组的起始地址,end表示数组结束地址的下一位,cmp用于规定排序的方法,可以省略不写,如果不写,就默认从小到大排序(升序)。

基本用法

可以直接对数组进行从小到大排序,如对a[10]进行排序

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int a[10]={9,6,3,8,5,2,7,4,1,0};
    sort(a,a+10);
    for(int i=0;i<10;i++)
    cout<<a[i]<<" ";
    return 0;
}

这时可能你们就会问了:那么怎样从大到小(降序)排序呢?这就如前文所说需要在sort()函数里的第三个参数了,告诉程序我要从大到小排序。需要加入一个比较函数cmp(),此函数的实现过程如下:

bool cmp(int a,int b)
{//返回true,a排在前面,否则b在前面
    return a>b;
}

于是我们就可以将数组中的元素按从大到小排序了:

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{   
    return a>b;
}
int main()
{
    int a[10]={9,6,3,8,5,2,7,4,1,0};
    sort(a,a+10,cmp);   
    for(int i=0;i<10;i++)
    cout<<a[i]<<endl;
    return 0;
}

进阶用法

sort函数不仅可以对单独的元素进行排序,也可以对结构体进行排序,如,定义一个名为node的结构体:

struct node
{    
int a;    
int b;    
double c;
}

然后按a从大到小排序,可以写一个比较函数:

bool cmp(node x,node y)
{    
    return x.a>y.a;
}

上一篇:JWT加密解密


下一篇:2022-JAVA面试必背