cmp就是排序的标准,a和b为任意类型的指针,所以需要根据实际情况进行类型强转
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
char hh;
};
int cmp(const void * a,const void * b)
{
return ((struct node *)a)->data - ((struct node*)b)->data;//这是从小到大排序,若是从大到小改成: ((struct node *)b)->data - ((struct node*)a)->data;
}
int main()
{
struct node a[100];
int n;
scanf("%d", &n);//n代表数组中有几个数字
int i;
for (i = 1; i <= n; i++)
scanf("%d", &a[i - 1].data);
qsort(a, n, sizeof(a[0]), cmp);//(数组,需要排序的数字个数,单个数字所占内存大小,比较函数)
for (i = 1; i <= n; i++)
printf("%d ", a[i - 1].data);
return 0;
}