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