C语言stdlib头文件(stdlib.h)中qsort函数的用法及代码示例。
用法:
void qsort (void* base, size_t num, size_t size,
int (*compar)(const void*,const void*));
对数组的元素进行排序
此函数使用的排序算法通过调用指定的元素来比较成对的元素compar函数以指向它们的指针作为参数。
该函数不返回任何值,但会修改由指向的数组的内容base按照定义重新排序其元素compar。
等效元素的顺序是不确定的。
参数
- base
- 指向要排序的数组的第一个对象的指针,将其转换为
void*
。 - num
- 指向的数组中的元素数base。
size_t是无符号整数类型。 - size
- 数组中每个元素的大小(以字节为单位)。
size_t是无符号整数类型。 - compar
- 指向比较两个元素的函数的指针。
该函数被重复调用qsort比较两个元素。它应遵循以下原型:
int compar (const void* p1, const void* p2);
以两个指针作为参数(都转换为const void*)。该函数通过返回(以稳定且可传递的方式)定义元素的顺序:
返回值 意义 <0
指向的元素p1在由指向的元素之前p2 0
指向的元素p1等效于所指向的元素p2 >0
指向的元素p1跟随由指向的元素p2
对于可以使用常规关系运算符进行比较的类型,一般compar函数可能看起来像:
1
2
3
4
5
6int compareMyType (const void * a, const void * b) { if ( *(MyType*)a < *(MyType*)b ) return -1; if ( *(MyType*)a == *(MyType*)b ) return 0; if ( *(MyType*)a > *(MyType*)b ) return 1; }
返回值
空示例
/* qsort example */
#include <stdio.h> /* printf */
#include <stdlib.h> /* qsort */
int values[] = { 40, 10, 100, 90, 20, 25 };
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main ()
{
int n;
qsort (values, 6, sizeof(int), compare);
for (n=0; n<6; n++)
printf ("%d ",values[n]);
return 0;
}
输出:
10 20 25 40 90 100 |
相关用法
- C语言 atof用法及代码示例
- C语言 atoi用法及代码示例
- C语言 atol用法及代码示例
- C语言 atoll用法及代码示例
- C语言 strtod用法及代码示例
- C语言 strtof用法及代码示例
- C语言 strtol用法及代码示例
- C语言 strtold用法及代码示例
- C语言 strtoll用法及代码示例
- C语言 strtoul用法及代码示例
- C语言 strtoull用法及代码示例
- C语言 rand用法及代码示例
- C语言 srand用法及代码示例
- C语言 calloc用法及代码示例
- C语言 free用法及代码示例
- C语言 malloc用法及代码示例
- C语言 realloc用法及代码示例
- C语言 abort用法及代码示例
- C语言 atexit用法及代码示例
- C语言 at_quick_exit用法及代码示例
- C语言 exit用法及代码示例
- C语言 getenv用法及代码示例
- C语言 quick_exit用法及代码示例
- C语言 system用法及代码示例
- C语言 _Exit用法及代码示例
- C语言 bsearch用法及代码示例
- C语言 abs用法及代码示例
- C语言 div用法及代码示例
- C语言 labs用法及代码示例
- C语言 ldiv用法及代码示例
- C语言 llabs用法及代码示例
- C语言 lldiv用法及代码示例
- C语言 mblen用法及代码示例
- C语言 mbtowc用法及代码示例
- C语言 wctomb用法及代码示例
- C语言 wcstombs用法及代码示例
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C qsort function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。