该函数其实是一个快排,具体声明如下:
void qsort(void *base,
size_t nmemb,
size_t size,
int (*compar)(const void *p, const void *q));
各参数的意义:
base:待排序的对象,比如一个数组;
nmemb:待排序的对象中元素的个数,比如一个数组中的元素个数;
size:待排序对象中的元素所占内存大小;
compar:自定义的比较函数,专业一点其实就是一个函数指针,一个返回值为int,传入参数为void型的两个待排数的函数。
我们再来详细讲一下compar这个函数,它的返回值为int,当为正数的时候,就认为交换条件成立,传入的两个参数p,q指向的数将会交换位置,否则不进行交换。
具体我们来看代码分析一下:
#include#include void print_array(int arr[],int n){ // 打印数组 int* p = arr; while(p m){ return 1;//第一个数大于第二个数就进行交换 }else{ return -1;//第一个数小于第二个数就维持原来的顺序 } // 该函数其实就是将两个数调整为自小到大的顺序 } int main(){ int n; scanf("%d",&n); int a[n]; for(int i=0;i 代码运行结果如下:



