sort 和qsort函数cmp函数各种写法

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

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

 

int型:

sort函数:

int cmp(int a,int b)

{

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

}

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

       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

}

qsort函数:

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

{

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

 

字符串型:

包含头文件

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

     //return c.b>d.b;//return c.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

}
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()求所占内存的吧

你可能感兴趣的:(小结)