1、STL排序算法sort
STL:(Standard Template Library)标准库,包含常用的排序算法,使用方便,效率很高,如需使用,需要在头文件上写:#include <algorithm>
1.1、用sort进行排序(用法一)
sort(数组名+n1,数组名+n2):对下标在[n1,n2)的数组进行从小到大排序
int a[]={
1,5,4,2,5,6,16}
sort(a,a+7) //对整个数组排序
int a[]={
1,3,6,2,11,10}
sort(a+1,a+4) //结果:{
1,2,3,6,11,10}
1.2、用sort进行排序(用法二)
对元素类型为T的数组进行从大到小排序:
sort(数组名+n1,数组名+n2,greater<T>())
int a[]={
1,3,5};
sort(a,a+3,greater<int>());//结果:{
5,3,1}
1.3、用sort进行排序(用法三)
用自定义的排序规则,对任何类型为T的数组排序
sort(数组名+n1,数组名+n2,排序规则结构名());
排序规则的定义方式:
struct 结构名
{
bool operator() (const T & a1 ,const & a2 )const{
//若a1应该在前面,返回True,否则为False(包括相等)
}
};
例子
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm> //新加的头文件
using namespace std;
struct Rule1{
//从大到小排序
bool operator()(const int & a1,const int & a2) const{
return a1>a2;
}
};
struct Rule2{
//按照个位数从小到大排序
bool operator()(const int & a1,const int & a2) const{
return a1%10<a2%10;
}
};
void Print(int a[],int size){
for(int i=0;i<size;i++){
printf("%d ",a[i]);
}
printf("\n");
}
int main(){