在学习数据结构的时候,我们会学习到很多不同的排序算法,比如说冒泡排序法,哈希表(大雾),以及快速排序。而C的函数库也给我们了一个快速排序的函数。就是我所提到的这个qsort。这个函数内部是一个写好了的快速排序算法的函数。头文件是#include<stdlib.h>。
我们首先需要来了解一下什么是快速排序,快速排序可以说是一种基于冒泡排序的衍生算法,它是对于冒泡排序的一种改进。快速排序法是最有效的排序算法之一,对大型数组而言更是如此。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以对这两部分记录继续进行排序,不断缩小数据结构,不断重复这个过程,以达到整个序列有序。这个算法我们会在我的另一个新篇(新坑)的数据结构中进行说明。我们今天要说明的是qsort()快速排序的这个算法。在ANSI原形中
void qsort(void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *));
猛一看,这个原形还是让人耳目一新啊(大雾)。分析一下这个函数所需要的参数:第一个参数为指向要排序的数组头部的指针。因为我们并不能够确定我们要排的序列的类型,是整形,浮点数,亦或是字符串。所以这里使用的是无符号指针,这样qsort函数的第一个十级参数可以指向任何类型的数组。第二个参数为需要排序的项目量,也就是我们要进行排序的数据的多少。函数原型将该值转换为size_t类型 ,并在标准头文件中定义该整数类型。(size_t类型是sizeof返回的类型的值。这是一个无符号整数类型