c语言中的Qsort函数

时间:2021-10-31 04:34:39

qsort()函数模板为:Qsort(s,n,sizeof(a[0]),cmp)

解释:s为数组的名字,n为数组的大小,sizeof(a[0])为一个数组元素的大小,cmp为一个函数,可以声明数组是按什么顺序排的,是升序还是降序。

        一般的,cmp函数的模板为:

cmp(const void *a,const void *b){

return (*(int *)a-*(int *)b);//此为升序;若为return (*(int *)b-*(int *)a);则为降序

}

 其中的qsort函数包含在<stdlib.h>的头文件里,strcmp包含在<string.h>的头文件里。在程序中可直接调用Qsort函数,很方便很好用,快排序有时候会和枚举法共用来解决问题,例如:求一数组中满足条件(其他任意三个数的和等于这个数)的最大的一个数。(解法:先排序后枚举) 

下面附上Qsort()函数的基本运用时的代码:

<span style="font-size:14px;">#include<stdio.h>
#include<stdlib.h>

#include<string.h>
int s[10000],n,i;
int cmp(const void *a,const void *b){
return (*(int *)a-*(int *)b);//升序
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s[i]);
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++)
printf("%d",s[i]);
return 0;
}</span>