Sort函数介绍
- sort()函数是定义在C++ STL 标准库中的一个模板函数
#include <algorithm>
- 对容器或普通数组中指定范围内的元素进行排序
- 排序规则——默认升序排序
- 可以使用函数的形式自定义排序规则,如降序
语法
int a[10]={9,5,3,8,6,0,7,4,1,2}; a[0]——a[9] 10个元素
sort(start,end,cmp) | sort(a,a+10) |
| a[0] |
(2)end表示数组结束地址的下一位;即首地址加上数组的长度n(代表尾地址的下一地址)。 | a+10 结束地址下一位:9+1 数组长度为:10 |
(3)cmp用于规定排序的方法,可不填,默认升序。 | 升序 |
如果只对前 5 个元素排序,如何处理?
sort(a,a+5)
说明1:
如果要降序排序,需要定义一个比较函数 cmp
bool cmp(int a,int b)
{
return a>b;
}
sort(a,a+10,cmp)
说明2:
sort()函数是C++一种排序方法之一,相较冒泡排序和选择排序所带来的执行效率不高的问题,sort()函数使用的排序方法是类似于快速排序的方法,时间复杂度为n*log2(n),执行效率较高。
函数示例
示例一 —— 升序排序
sort函数没有第三个参数,实现的是从小到大(升序)排列
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};//静态数组
for(int i=0;i<10;i++) //输出数组内容
cout<<a[i]<<" ";
cout<<endl;
sort(a,a+10);//对数组中的所有数据数升序排列
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
示例——降序排序
#include<bits/stdc++.h>
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};
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
sort(a,a+10,cmp);//对a[0] ~a[9] 降序排列
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}