C语言函数qsort的使用方法

作者:哈哈小脸 | 创建时间: 2023-04-09
qsort函数stdlib.h文件中,函数原型为 void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *)); *base ...
C语言函数qsort的使用方法

操作方法

对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),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); else return (((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 <stdio.h> #include <stdlib.h> #include <string.h> char s[2001][1001]; 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<n;i++) gets(s[i]); qsort(s,n,1001*sizeof(char),cmp); for(i=0;i<n;i++) puts(s[i]); return 0; }

温馨提示

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

更多推荐