sort和qsort函数对结构体的二级排序


const int N=100010;

结构体:

struct POINT{

        int  x;

        int  y;

};


POINT ap[N];

在c++中结构体不需要用struct POINT

1.qsort

头文件:stdlib

qsort函数调用时格式:

qsort(ap,n,sizeof(ap[0]),cmp);
n是比较元素的个数。

cmp函数:

                  int cmp(const void *a,const void *b)
                  {
                           POINT * p1 = (POINT*)a;
                           POINT * p2 = (POINT*)b;
                           if(p1->x != p2->x) return p1->x-p2->x;
                           return p1->y-p2->y;
                  }


2.sort

头文件:algorithm

sort函数调用时格式:

sort(ap,ap+n,cmp);
n是比较元素的个数。

cmp函数:

       

int cmp(POINT &a,POINT &b)
{
    if(a.x!=b.x) return a.x>b.x;
    return a.y>b.y;
}

记住cmp函数中返回表达式,一个是用“-”,另一个是用“>”。



你可能感兴趣的:(sort和qsort函数对结构体的二级排序)