C语言函数qsort的使用方法

2025-12-27 02:10:29

1、对int类型数组排序int num[100];

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

qsort(num,100,sizeof(num[0]),cmp);

2、对double类型数组排序

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

{

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

}

3、结构体一级排序

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);}

4、对结构体二级排序

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);}

5、对字符串进行排序

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

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

#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;
}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢