c的qsort、c++的sort

原作者:wyjwyl

用sort 函数,要加头文件<algorithm>以及using namespace std;另外文件的后缀要改为.cpp

用qsort函数,要加头文件<stdlib>这个是c里的,文件的后缀可以是.c

int型:

sort函数:

int cmp(int a,int b)

{

    return a>b;//(从大到小)return a<b;(从小到大)

}

扫描二维码关注公众号,回复: 5442023 查看本文章

qsort函数:

int cmp(const  void *a,const  void  *b)

{

    return *(int *)a-*(int *)b;//(从大到小)return *(int *)b-*(int *)a;(从小到大)

}

double 型:

sort函数:

int cmp(double a,double b)

{

       if(a>b)return 1;//(从大到小)if(a<b)return 1;(从小到大)

       return -1;

}

qsort函数:

int cmp(const void *a,const void *b)

{

       if(*(double *)a>*(double *)b)return 1;//(从大到小)if(*(double *)b>*(double *)a)return 1;(从小到大)

       return -1;

}

char 型:

sort函数:

int cmp(char a,char b)

{

       return a>b;//(从大到小)return a<b;(从小到大)

}

qsort函数:

int cmp(const void *a,const void *b)

{

      return *(char *)a>*(char *)b;//(从大到小)return *(char *)b>*(char *)a;(从小到大)
}

字符串型:

包含头文件<string.h>

qsort函数:

int cmp(const void *a,const void *b)

{

        return strcmp((char *)a,(char *)b);//(从大到小)return strcmp((char *)b,(char *)a);(从小到大)因为字符串比较函数直接用的是地址,so。。。。
}

结构体型:

struct node

{

        int a;

        char b;

        double t;

        char s[101];

}stu[1001];

sort函数:

int cmp(node c,node d)

{

      return c.a>d.a;//return c.a<d.a;

     //return c.b>d.b;//return c.b<d.b;

     //if((*(node *)c).t>(*(node *)d).t)return 1;return 0;

     //return strcmp(c.s,d.s);//return strcmp(d.s,c.s);

     //if(c.a==d.a)return c.b<d.b;

}
qsort函数:

int cmp(const void *c,const void *d)

{
        return (*(node *)c).a-(*(node *)d).a;//return (*(node *)c).a>(*(node *)d).a;

        //return (*(node *)c).b-(*(node *)d).b;//return (*(node *)c).b>(*(node *)d).b;

       //if((*(node *)c).t>(*(node *)d).t)return 1;return 0;

       //return strcmp((*(node *)c).str,(*(node *)d).str)//return strcmp((*(node *)c).str,(*(node *)d).str);

       //if((*(node *)c).a==(*(node *)d).a) return (*(node *)c).b>(*(node *)d).b;

}

调用时sort函数有三个参数例如数组a:sort(a,a+n,cmp);//n为排序的长度

调用qsort函数时有四个参数例如数组a:qsort(a,n,sizeof(a),cmp);//n为排序长度,sizeof()求所占内存的吧

猜你喜欢

转载自blog.csdn.net/y649014081/article/details/79383419