C语言qsort函数实例详解如何应用?

2026-05-20 19:521阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计853个文字,预计阅读时间需要4分钟。

C语言qsort函数实例详解如何应用?

C语言中qsort函数的用法实例详解+快速排序是一种常用的排序算法,在C语言的标准库中也提供了快速排序的函数。下面详细说明qsort函数的用法。

qsort函数包含在stdlib.h头文件中,其声明如下:

cvoid qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

参数说明:- `base`:指向要排序的数组的指针。- `nmemb`:数组中元素的数量。- `size`:每个元素的大小(以字节为单位)。- `compar`:一个函数指针,指向比较函数,用于比较两个元素。

比较函数的声明如下:

cint compar(const void *a, const void *b);

C语言qsort函数实例详解如何应用?

比较函数应该返回以下值之一:- 如果`a`小于`b`,则返回负值。- 如果`a`等于`b`,则返回0。- 如果`a`大于`b`,则返回正值。

下面是一个使用qsort函数的示例:

c#include #include

int compare(const void *a, const void *b) { int int_a=*((int*)a); int int_b=*((int*)b);

if (int_a==int_b) return 0; else if (int_a

int main() { int arr[]={5, 2, 9, 1, 5, 6}; int n=sizeof(arr) / sizeof(arr[0]);

qsort(arr, n, sizeof(int), compare);

printf(Sorted array: \n); for (int i=0; i

return 0;}

在上面的示例中,我们定义了一个比较函数`compare`,它将两个整数进行比较。然后,我们使用qsort函数对数组`arr`进行排序。最后,我们打印出排序后的数组。

C语言中qsort函数的用法实例详解

快速排序是一种用的最多的排序算法,在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,指向函数的指针也即函数指针。这个函数用来比较两个数组元素,第一个参数大于,等于,小于第二个参数时,分别显示正值,零,负值。

下面看几个例子:

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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文共计853个文字,预计阅读时间需要4分钟。

C语言qsort函数实例详解如何应用?

C语言中qsort函数的用法实例详解+快速排序是一种常用的排序算法,在C语言的标准库中也提供了快速排序的函数。下面详细说明qsort函数的用法。

qsort函数包含在stdlib.h头文件中,其声明如下:

cvoid qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

参数说明:- `base`:指向要排序的数组的指针。- `nmemb`:数组中元素的数量。- `size`:每个元素的大小(以字节为单位)。- `compar`:一个函数指针,指向比较函数,用于比较两个元素。

比较函数的声明如下:

cint compar(const void *a, const void *b);

C语言qsort函数实例详解如何应用?

比较函数应该返回以下值之一:- 如果`a`小于`b`,则返回负值。- 如果`a`等于`b`,则返回0。- 如果`a`大于`b`,则返回正值。

下面是一个使用qsort函数的示例:

c#include #include

int compare(const void *a, const void *b) { int int_a=*((int*)a); int int_b=*((int*)b);

if (int_a==int_b) return 0; else if (int_a

int main() { int arr[]={5, 2, 9, 1, 5, 6}; int n=sizeof(arr) / sizeof(arr[0]);

qsort(arr, n, sizeof(int), compare);

printf(Sorted array: \n); for (int i=0; i

return 0;}

在上面的示例中,我们定义了一个比较函数`compare`,它将两个整数进行比较。然后,我们使用qsort函数对数组`arr`进行排序。最后,我们打印出排序后的数组。

C语言中qsort函数的用法实例详解

快速排序是一种用的最多的排序算法,在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,指向函数的指针也即函数指针。这个函数用来比较两个数组元素,第一个参数大于,等于,小于第二个参数时,分别显示正值,零,负值。

下面看几个例子:

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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!