趣百科

C语言函数qsort的使用方法

编辑:Simone 2024-12-05 06:17:00 567 阅读

C语言函数qsort的使用方法

qsort函数stdlib.h文件中,函数原型为

void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));

*base 为要排序的数组

nelem 为要排序的数组的长度

width 为数组元素的大小(一字节为单位)

默认是从小到大排序的!

(* Comp)(const void *p1,const void *p2) 为判断大小函数的指针,这个函数需要自己定义,如果p1>p2,函数返回-1;a

对int类型数组排序int num;

int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;}

qsort(num,100,sizeof(num),cmp);

对double类型数组排序

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

{

return (*(double *)a>*(double * )b?1:-1);

}

结构体一级排序

struct ln{double data;int x;int y;};

int Mycmp2(const void *a ,const void * b){return (((ln *)a)->data>((ln *)b)->data?1:-1);}

对结构体二级排序

struct ln{int x;int y;};

对x按升序排列,如果x相同,则y按降序排列

int Mycmp1(const void *a ,const void * b){return (((ln *)a)->data>((ln *)b)->data?1:-1);} //升序

int Mycmp2(const void *a ,const void * b){if(((ln *)a)->data==((ln *)b)->data) return (((ln *)a)->x>((ln *)b)->x?-1:1);}//降序

int Mycmp2(const void *a ,const void * b) //这个函数和上面两个函数之和的功能相同{if(((ln *)a)->data==((ln *)b)->data) return (((ln *)a)->x>((ln *)b)->x?-1:1);elsereturn (((ln *)a)->data>((ln *)b)->data?1:-1);}

对字符串进行排序

int Mycmp3(const void *a ,const void * b){return strcmp(((ln *)a)->str,((ln *)b)->str);}

对字符串二维数组排序完整代码

#include #include #include

char s;

int cmp(const void *a, const void *b){return strcmp((char *)a,(char *)b);}

int main(){int i,n;scanf("%d",&n);getchar();for(i=0;i

qsort函数中的第四个参数为函数指针,函数名称即是函数指针,int (* cmp)(const void * a,const void * b),其中指针a,b指向的是qsort中第三个参数指定的类型变量;

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/94824.html

相关推荐