C语言关于qsort函数的用法详细说明
2014-04-20 21:29
323 查看
快速排序是一种用的最多的排序算法,在C语言的标准库中也有快速排序的函数,下面说一下详细用法。
qsort函数包含在<stdlib.h>中
qsort函数声明如下:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
参数说明:
base,要排序的数组
nmemb,数组中元素的数目
size,每个数组元素占用的内存空间,可使用sizeof函数获得
compar,指向函数的指针也即函数指针。这个函数用来比较两个数组元素,第一个参数大于,等于,小于第二个参数时,分别显示正值,零,负值。
下面看几个例子:
qsort函数包含在<stdlib.h>中
qsort函数声明如下:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
参数说明:
base,要排序的数组
nmemb,数组中元素的数目
size,每个数组元素占用的内存空间,可使用sizeof函数获得
compar,指向函数的指针也即函数指针。这个函数用来比较两个数组元素,第一个参数大于,等于,小于第二个参数时,分别显示正值,零,负值。
下面看几个例子:
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> void main(void) { int i; int a[10]={0,1,2,3,4,5,6,7,8,9}; char b[10]={'a','b','c','d','e','f','g','h','i','j'}; double c[10]={0.1,0.2,0.9,0.5,0.3,0.6,0.7,0.8,1.1,1.2}; int cmp1(const void * a,const void * b) { return (*(int*)a-*(int*)b);//a>b 返回正值 } int cmp2(const void * a,const void *b) { return(*(char*)a-*(char*)b); } int cmp3(const void * a,const void * b) { if(fabs(*(double*)a-*(double *)b)<1*exp(-20)) return 0; else return(((*(double*)a-*(double*)b)>0)?1:-1); } qsort(a,10,sizeof(int),&cmp1);//对于函数指针(指向函数的指针),直接传入函数名和函数名进行& //运算都是可以的,因为在调用函数时也是取的函数的地址 qsort(b,10,sizeof(char),cmp2); qsort(c,10,sizeof(double),cmp3); for(i=0;i<10;i++) printf("%d ",a[i]); for(i=0;i<10;i++) printf("%c ",b[i]); for(i=0;i<10;i++) printf("%lf ",c[i]); }
相关文章推荐
- Android中关于布局填充器的各种详细用法和说明
- 关于ffmpeg的安装详细步骤和说明
- 关于Nginx的详细说明和配置
- setsockopt()用法(参数详细说明)
- 关于js中alert弹出窗口文本换行问题简单详细说明
- setsockopt()用法(参数详细说明)
- Hibernate 级联关系说明 - 关于cascade和inverse的用法
- setsockopt()用法(参数详细说明)
- 21.Linux:c语言中signal函数详细解释说明(转载)
- 关于linux下make详细用法
- setsockopt()用法(参数详细说明)
- Java final String类的详细用法还有特性说明,自己也在学习.
- C语言中关于scanf函数的用法
- 一篇关于web.xml配置的详细说明
- setsockopt()用法(参数详细说明)
- 百度百科中关于fwrite的用法说明
- 关于html5缓存部分比较详细的说明
- 关于web.xml配置的详细说明
- Quick-Cocos2d-x CCHttpRequest详细说明及用法
- 关于C语言中的malloc和free函数的用法(转载)