快排函数qsort()
程序员文章站
2022-04-01 17:28:50
...
C语言的标准库里面有qsort()函数,这个函数是通过快速排序,来实现给一个任意类型的数组排序。其需要的参数是:数组头指针,数组长度,每个数组元素所占的字节数,比较函数的指针。通过这些信息来对数组进行快速排序!下面我介绍下是如何实现
首先定义函数接口
void qSort(void*, size_t, size_t, int(*)(const void *, const void *));
我们之所以要定义void指针,是为了接受各种指针,当然也包括动态链表的指针。由这个接口,我们还不能给一个无序的数组排序。还要在这个接口中调用实现快速排序函数。我们知道快速排序是需要两个标量的,一个标定要排序的数组的最低位,一个标定最高位。其定义可以如下:
void qSort(void*, size_t, size_t, size_t, int(*)(const void *, const void *));
如果有相同的元素进行排序的时候,不推荐适用快排,反而推荐比较更加稳定的stable_sort.