sort用起来很方便的排序函数~
cmp函数和qsort中的比较像
MSDN中的定义:
template<class RanIt> void sort(RanIt first, RanIt last); //--> 1)
template<class RanIt, class Pred> void sort(RanIt first, RanIt last, Pred pr); //--> 2)
头文件:
#include <algorithm>
using namespace std;
1、.默认的sort函数是按升序排。
sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址
2、可以自己写一个cmp函数,按特定意图进行排序。
例如:
int cmp( const int &a, const int &b ){
if( a > b )
return 1;
else
return 0;
}
sort(a,a+n,cmp);
是对数组a降序排序
也可以对结构体进行排序:
#include<stdio.h>
#include<algorithm>
using namespace std;
struct data
{
int x;
int y;
}a[3];
bool cmp1(const struct data &m,const struct data &n) //cmp的类型为bool型
{
return m.x < n.x; //升序 与qsort不同
}
bool cmp2(const struct data &m,const struct data &n)
{
return m.x > n.x; //降序
}
bool cmp3( const struct data &m,const struct data &n)
{
if(m.x < n.x) //先按 x 升序,若 x 相等,按 y 升序排
return 1;
else
{
if(m.x > m.y)
return 0;
else
{
if(m.x == m.y)
return m.y < m.y;
}
}
}
int main()
{
scanf("%d%d%d%d%d%d",&a[0].x,&a[0].y,&a[1].x,&a[1].y,&a[2].x,&a[2].y);
sort(a,a+3,cmp1);
sort(a,a+3,cmp2);
sort(a,a+3,cmp3);
return 0;
}
//额终于把sort函数弄对了~~~