qsort(a,n,sizeof(a[0]),cmp)
qsort(指向一个要排序数组的首地址,指要排序数组的个数,每个数组的大小,cmp)
下面将分别用int,double,char,str,struct等形式的代码来说明qsort函数的调用
int 型
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
using namespace std;
int cmp(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}
int main()
{
int i,n;
int a[1010];
scanf("%d",&n);
for( i=0;i<n;i++)
{
scanf("%d",&a[i]);
memset(a,0,sizeof(a));
}
qsort(a,n,sizeof(a[0]),cmp);
// sort(a,a+n,cmp);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
double型
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
//if(*(double *)a-*(double *)b)
// return 1;
//else
// return -1;
return *(double *)a>*(double *)b;//这两种选一种就行
}
int main()
{
double a[1010];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n;i++)
{
printf("%lf ",a[i]);
}
printf("\n");
}
char型(用的是sort)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int cmp(char a, char b){// <span style="color:#333399;">使用sort函数声明时不需要用指针变量</span>
return b > a;
}
int main (){
//int n;
//scanf("%d", &n);
char a[10];
scanf("%s", a);
sort(a, a + 3,cmp);//
printf("%s\n", a);
return 0;
} <span style="font-family: Arial, Helvetica, sans-serif;">#include<stdio.h></span>#include<stdlib.h>
#include<string.h>
char str[100][1010];
int cmp(const void *a,const void *b)
{
return strcmp((char *)b,(char *)a);
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
qsort(str,n,sizeof(str[0]),cmp);
for(i=0;i<n;i++)
{
printf("%s\n",str[i]);
}
return 0;
}
结构体
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int u,w;
double v;
char str[1010];
}b[1010];
int cmp(const void *a,const void *b)
{
//return strcmp((*(node *)a).str,(*(node *)b).str);
if((*(node *)a).u==(*(node *)b).u)
return (*(node *)b).w-(*(node *)a).w;
return (*(node *)a).u-(*(node *)b).u;
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&b[i].u,&b[i].w);
}
qsort(b,n,sizeof(b[0]),cmp);
for(i=0;i<n;i++)
{
printf("%d %d\n",b[i].u ,b[i].w);
}
}
本文详细介绍了qsort函数的使用方法,并通过int、double、char、字符串及结构体等多种数据类型的实例展示了如何调用qsort进行排序。适用于C/C++初学者掌握通用排序技巧。
2771

被折叠的 条评论
为什么被折叠?



