sort函数

来源:互联网 发布:微霸软件 编辑:程序博客网 时间:2024/06/05 16:55

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函数弄对了~~~