快速排序qsort的使用
2010-08-02 11:13
232 查看
表头文件 #include <stdlib.h>
定义函数 void qsort(void * base,size_t nmemb,size_t size,int ( * compar)(const void *, const void *));
函数说明
参数base指向欲排序的数组开头地址,参数nmemb代表数组中的元素数量,
每一元素的大小则由参数size决定,最后一项参数compar为一函数指针,
这个函数用来判断两个元素间的大小关系,
若传给compar的第一个参数所指的元素数据大于第二个参数所指的元素数据则必须回传大于零的值,
两个元素数据相等则回传0。
比较函数:
int CmpInt(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
其中a和b是数组中的两个元素,大小为size。
例如,对整数数组int a
排序,则可以:
qsort(a, n, sizeof(int), CmpInt);
如果是结构体数组Test a
,则可以:
qsort(a, n, sizeof(Test), cmp);
其中,
typedef struct
{
int a;
char b;
char c[8];
double d;
}Test;
比较函数则可以这样写:
int cmp(const void *a, const void *b)
{
// 强制类型转换
Test *m = (Test *)a;
Test *n = (Test *)b;
// 比较
return m->a - n->a;或
return m->b - n->b;或
return strcmp(m->c, n->c);或
return m->d - n->d;
}
定义函数 void qsort(void * base,size_t nmemb,size_t size,int ( * compar)(const void *, const void *));
函数说明
参数base指向欲排序的数组开头地址,参数nmemb代表数组中的元素数量,
每一元素的大小则由参数size决定,最后一项参数compar为一函数指针,
这个函数用来判断两个元素间的大小关系,
若传给compar的第一个参数所指的元素数据大于第二个参数所指的元素数据则必须回传大于零的值,
两个元素数据相等则回传0。
比较函数:
int CmpInt(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
其中a和b是数组中的两个元素,大小为size。
例如,对整数数组int a
排序,则可以:
qsort(a, n, sizeof(int), CmpInt);
如果是结构体数组Test a
,则可以:
qsort(a, n, sizeof(Test), cmp);
其中,
typedef struct
{
int a;
char b;
char c[8];
double d;
}Test;
比较函数则可以这样写:
int cmp(const void *a, const void *b)
{
// 强制类型转换
Test *m = (Test *)a;
Test *n = (Test *)b;
// 比较
return m->a - n->a;或
return m->b - n->b;或
return strcmp(m->c, n->c);或
return m->d - n->d;
}
相关文章推荐
- 快速排序的库函数qsort与sort的使用方法
- 读书笔记 算法导论 快速排序 QuickSort 使用最后一个元素作为pivot
- 快速排序的实现与使用
- C语言标准库函数qsort排序的介绍与使用
- C语言标准库函数qsort排序的介绍与使用
- 在c++中qsort()排序函数的使用qsort函数应用大全
- sort&qsort排序使用
- 快速排序 Gnu glibc qsort_r
- C程序快速排序之qsort()
- 问题 C: 快速排序 qsort [2*]
- 快速排序qSort
- C语言标准库函数qsort排序的介绍与使用
- 快速排序 qsort
- 快速排序Qsort--C语言版
- 快速排序 qsort
- 在c 中qsort()排序函数的使用qsort函数应用大全
- C++ 排序函数 sort(),qsort()的使用方法
- 快速排序 Gnu glibc qsort
- 如何使用shell脚本快速排序和去重文件数据
- C语言标准库函数qsort排序的介绍与使用