基本介绍
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;
}