qsort函数的使用及实现

1.qsort函数的本质:回调函数,主体比较方法需要使用者实现。

2.主体解释:

void qsort        //函数没有返回类型

void *base;        //指向排列数组的第一个元素,因为数组类型可以是整型字符型甚至指针结构体,所以使用void型指针

sizeofnum        //数组的元素个数,qsort需要运行限定次数的冒泡排序

sizeoftype        //数组中元素的大小(字节),可以用sizeof(arr[0])实现

int (*compar)(const void *p1,const void*p2)        //这是一个函数指针,指向使用者编写的函数,此函数的形参为两个void类型的指针且不改变其值,用户可以自由编写两个元素的排列方式,升序降序等排列顺序,再由qsort函数在每次冒泡函数使用的时候回调此函数,写的时候写函数名即可

举例:(用户创建的函数声明必须在qsort前)

int compa(const void p1,const void p2)

{return *(int*)p1-*(int*)p2;     }   //void类型指针使用前必须强制类型转换为其他类型,此为升序排序,也有其他排序方式,返回值必须可以分大于0小于0等于0三种,大于等于0qsort不会交换数据,小于则会交换数据}

你可能感兴趣的:(数据结构)