qsort 函数 C 语言编译器函数库自带的排序函数,其时间复杂度为 O(nlog n)。qsort 函数包含在 C 标准库 <stdlib.h> 中。
一、函数声明
1 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));
二、参数
-
base :指向要排序的数组的第一个元素的指针。
-
nitems :由 base 指向的数组中元素的个数。
-
size :数组中每个元素的大小,以字节为单位。
-
compar :用来比较两个元素的函数,即函数指针(回调函数)
三、回调函数
回调函数就是通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。
在 qsort 函数中,compar 参数指向一个比较两个元素的函数。注意两个形参必须是 const void * 型,在调用compar 函数时,传入的实参也必须转换成 const void * 型。在 compar 函数内部将 const void * 型转换成实际类型。
compar 函数的声明如下:
1 int compar(const void *p1, const void *p2);
compar 函数的逻辑如下:
Compare 函数的返回值
|
描述
|
---|---|
< 0
|
elem1将被排在elem2前面
|
0
|
elem1 等于 elem2
|
> 0
|
elem1 将被排在elem2后面
|