需要的头文件:
#include<algorithm>只需要一行代码:
sort(a,a+n,cmp);a表示要排序的数组,含n个元素,而cmp是判定条件。 如果想要从a[1]开始存储数据,则代码应该改为:
sort(a+1,a+n+1,cmp);第三个参数cmp其实是一个自定义比较器(判断函数):
bool cmp(int i,int j) { return i<j; }这样子写结果就是从小到大排序👇;
//这样就是从大到小排序 bool cmp(int i,int j) { return i>j; }double,float 等类型换一个参数类型即可; 如果需要用结构体排序,则需要这样写👇:
#include<algorithm> using namespace std; struct student { int number1; int number2; }; student arr[100]; bool cmp(student i , student j) //注意类型变了 { return i.number1 < j.number1; } int main() { int n; //这里写输入 sort(a,a+n,cmp); //这里再测试一下输出对不对 }这样就会按照arr[].number1 排序;
另外,还可以给结构体来个二级排序。 比如先以number1排序,当number1相同时,按照number2排序。 只需要更改cmp就行
写法1
bool cmp(student a,student b) { if(a.number1 != b.number1) return a.number1<b.number1; else return a.number2 < b.number2; }写法2
bool cmp(student a , student b) { if(a.number1 < b.number1) { return true; } else if(a.number1 == b.number1) { if(a.number2 < b.number2) { return true ; } } return false ; }