C<stdlib.h>库-qsort()函数的用法详解

qsort()函数的用法详解

该函数来自C语言标准库-stdlib.h。

1.1函数原型:

void qsort(void* base, size_t num, size_t width, int (__cdecl* compare)(const void*, const void*));

1.2函数功能: 对数组进行排序,数组有num个元素,每个元素大小为size。

参数base - 指向数组的起始地址,通常该位置传入的是一个数组名。
参数num - 表示该数组的元素个数。
参数width - 表示该数组中每个元素的大小(字节数)。
参数(__cdecl* compare)(const void*, const void*) - 此为指向比较函数的函数指针,决定了排序的顺序。

2.1 compare参数

compare参数指向一个比较两个元素的函数。(小到大是升序,大到小是降序)

该函数两个形参必须是const void *型,同时在调用该函数时,传入的实参也必须转换成const void *型。在compar函数内部会将const void *型转换成实际类型,见下文。

int compare(const void* _x, const void* _y){
    
    
  int *x = _x, *y = _y;
  return *x == *y? 0 : *x > *y? 1 : -1;
}

如果compare返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的前面
如果compare返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定
如果compare返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的后面

猜你喜欢

转载自blog.csdn.net/Holmes_shuai/article/details/115959811