1.结构体的qsort
#include<stdlib.h>
#include<stdio.h>
struct _block{
int att1;
int att2;
};
int cmp(const void *a, const void *b)
{
int aa = ((_block *)a)->att1;
int bb = ((_block *) b)->att1;
return aa>bb; //与所排序反向
}
int main()
{
int n;
_block b[3];
b[0].att1= 3; b[0].att2=3;
b[1].att1 =8; b[1].att2=8;
b[2].att1 = 5; b[2].att2=5;
qsort(b, 3, sizeof(_block), cmp);
for (n=0; n<3; n++){
printf("%d %d\n", b[n].att1, b[n].att2);
}
return 0;
}
2.整形的qsort
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
qsort(a,10,sizeof(int),cmp);
for(i=0;i<10;i++)
{
printf(i==9?"%d\n":"%d ",a[i]);
}
return 0;
}
3.字符串qsort
#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;
}