快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环可以在大部分的架构上很有效率地被实现出来。
C语言在< stdlib.h> 库里提供快排函数实现,这个函数用于对数组的排序,能对大部分数据类型进行排序。
声明:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
参数 :
从声明中可得,这个函数没有返回值,要有四个参数。其中第四个参数是函数指针,这里就不解释函数指针的概念了,有兴趣的自己去了解。
1. base – 指向要排序的数组的第一个元素的指针。
2. nitems – 由 base 指向的数组中元素的个数。
3. size – 数组中每个元素的大小,以字节为单位。
4. compar – 用来比较两个元素的函数
简单说来:qsort(*s, n, sizeof(s[0]), cmp); 参数1,2,3,4:
1.s是一个地址,参与排序的首地址
2.n待排序的数量
3.sizeof(s[0]),每一元素所占空间大小
4.指向函数的指针,确定排序的方式
例如:对长为10的数组排序,int a[10];
qsort(a,10,sizeof(i