简单分析 C 语言的 qsort() 源码
stdlib.h 是使用 C 语言需要引入的库,在系统文件下可以搜索到这个文件夹,在里面可以看到有一个 qsort() 文件用编译器或者记事本打开就能看到里面的源码了。
![qsort 路径](https://img-blog.csdnimg.cn/2019010615265119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4Mjg4ODQ3,size_16,color_FFFFFF,t_70)
单从文件名看,qsort() 采用的是快速排序算法,算法的时间复杂度为 O(nlogn) ,通常在企业的实际应用中对于快排这种 nlogn 复杂度的算法应用较多,对于 O(n) 例如 :桶排序。等线性排序方法会使用的较少。以桶排序为例,需要开辟额外的内存空间只适用于数据量大且密集的数据排序,例如高考全国考生的分数排序,近千万考生成绩都位于 0 - 750 分这个区间,采用桶排序就可以极大的提高排序的效率,因为「 桶 」之间有着自带的排序。
qsort() 是否全是使用快速排序
源码中以下几句话,设立 8 为使用快速排序和插入排序的分界点,当要排序的数组长度大于 8 时适合使用「 快速排序 」下与 8 时更适合使用「 插入排序 」
// This macro defines the cutoff between using QuickSort and insertion sort for