qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度是n*log(n),其结构为: void qsort( void *buffer, size_t count, size_t size, int (*compare)(const void*, const void *) ); 参数: *buffer 为要排序的数组 count 为要排序的数组的长度 size 为数组的大小 compare 为判断大小函数的指针,这个需要自己写(很关键!)用法:1.对int类型数组排序int number[100];int cmp(const void *a,const void *b){return *(int *)a-*(int *)b; //强制类型转换}qsort(number,100,sizeof(int),cmp); 2.对char类型数组排序 char str[100];int cmp(const void *a,const void *b){return *(char *)a-*(char *)b; //同int类型}qsort(str,100,sizeof(char),cmp); 3.对double类型数组排序 double number[100];int cmp(const void *a,const void *b){return *(double *)a>*(double *)b?1:-1;}qsort(number,100,sizeof(double),cmp); 4.对结构体一级排序 struct node{double data;int other;}s[100];//按照data的值从小到大将s排序int cmp(const void *a,const void *b){return (*(node *)a).data>(*(node *)b).data?1:-1;}qsort(s,100,sizeof(node),cmp); 5.对结构体二级排序 struct node{int x,y;}s[100];int cmp(const void *a,const void *b)//按照x从小到达排序,当x相等,y按照从大到小排{struct node *c=(node *)a;struct node *d=(node *)b;if(c->x!=d->x)return c->x - d->x; //从小到达排序 elsereturn d->y - c->y; //从大到小排}qsort(s,100,sizeof(node),cmp); 6.对字符串排序 struct STR_NODE{int data;char str[100];}s[100];//按照结构体中字符串str的字典顺序排序int cmp(const void *a,const void *b){return strcmp((*(STR_NODE *)a)->str,(*(STR_NODE *)b)->str);}qsort(s,100,sizeof(STR_NODE),cmp); 转自网络 转载于:https://www.cnblogs.com/chaehom/archive/2011/02/24/1963781.html