qsort函数功 能: 使用快速排序例程进行排序
头文件:stdlib.h
函数原型:
void __cdecl qsort (
void *base,
size_t num,
size_t width,
int (__cdecl *comp)(const void *, const void *)
)
参数说明:
1. base指向待排序数组的首地址。一般情况下,base就是数组的名字。
2. num为数组中待排序元素的数量。
3. width为数组中每个元素的大小,以字节为单位。一般为 sizeof(ElemType);
4. comp为指向比较函数的指针,用于确定排序的顺序。一般为cmp;
qsort 函数的用法规定,“比较函数”的原型应是:int (__cdecl *comp)(const void *, const void *);该函数的两个参数,elem1 和elem2,指向待比较的两个元素。也就是说, * elem1 和* elem2 就是待比较的两个元素。该函数必须具有以下行为:
1) 如果 * elem1 应该排在 * elem2 前面,则函数返回值是负整数(任何负整数都行)。
2) 如果 * elem1 和* elem2 哪个排在前面都行,那么函数返回0
3) 如果 * elem1 应该排在 * elem2 后面,则函数返回值是正整数(任何正整数都行)。
【comp函数的其他一些用例】
一、对int类型数组排序
int arr[1000];
int cmp(const void *a , const void *b)
{
return *(int *)a - *(int *)b;
}
qsort(arr,1000,sizeof(arr[0]),cmp);
二、对double类型数组排序(须注意)
double arr[1000];
int cmp(const void *a , const void *b)
{
return *(double *)a > *(double *)b ? 1 : -1;
}
qsort(arr,1000,sizeof(arr[0]),cmp);
三、对char类型数组排序
char arr[1000];
int cmp(const void *a , const void *b)
{
return *(char *)a - *(char *)b;
}
qsort(arr,1000,sizeof(arr[0]),cmp);
转载链接:https://www.cnblogs.com/CCBB/archive/2010/01/15/1648827.html