sort(begin, end,cmp):排序函数
头文件:
#include<algorithm>
主要功能:对一个数组或者一个vector进行排序, 默认从小到大排序
begin: 第一个下标为0的元素的地址
end: 最后一个元素的后一个位置的地址
cmp: “比较规则函数” 的接口(函数名),返回True,元素顺序不变,反之,元素顺序改变 ,注意:cmp中的比较规则不能出现>=,或者<=,只能有>或者<
eg:
vector排序:
vector <int> n(10);
for(int i = 0;i < 10; i++) n[i] = 10 - i;
for(int j = 0;j < 10; j++) printf("%d ", n[j]); //10 9 8 7 6 5 4 3 2 1
sort(n.begin(),n.end());
cout << endl;
for(int j = 0;j < 10; j++) printf("%d ", n[j]); //1 2 3 4 5 6 7 8 9 10
cout << endl;
vector排序(含cmp函数):
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(int x, int y)//x为下标较小的数,y为下标较大的数
{
return x > y;
}//若返回False,x,y交换位置
int main ()
{
vector <int> n(10);
for(int i = 0;i < 10; i++) n[i] = i;
for(int j = 0;j < 10; j++) printf("%d ", n[j]); //0 1 2 3 4 5 6 7 8 9
sort(n.begin(),n.end(), cmp);
cout << endl;
for(int j = 0;j < 10; j++) printf("%d ", n[j]); //9 8 7 6 5 4 3 2 1 0
cout << endl;
return 0;
}
数组排序:
int a[10];
for(int i = 0;i < 10; i++) a[i] = 10 - i;
for(int j = 0;j < 10; j++) printf("%d ", a[j]); //10 9 8 7 6 5 4 3 2 1
sort(a, a + 10);
cout << endl;
for(int j = 0;j < 10; j++) printf("%d ", a[j]); //1 2 3 4 5 6 7 8 9 10
cout << endl;
return 0;