1.排序算法时间复杂度、空间复杂度、稳定性比较
https://blog.youkuaiyun.com/yushiyi6453/article/details/76407640
2.排序算法的分类及如何选择
https://blog.youkuaiyun.com/derkampf/article/details/70183450
3.如何选择排序算法
https://www.cnblogs.com/hustdc/p/6707498.html
1) 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:
快速排序、堆排序或归并排序序。
快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
堆排序 : 如果内存空间允许且不要求稳定性的,
归并排序:如果内存空间允许且要求稳定性的,
2)当n较小,可采用直接插入或直接选择排序。
直接插入排序:当元素分布有序,直接插入排序将大大减少比较次数和移动记录的次数。 【为啥不选希尔呢?因为不稳定】
直接选择排序 :元素分布有序,如果不要求稳定性,选择直接选择排序 【一般也不会选了看来】
3)一般不使用或不直接使用传统的冒泡排序。
4)基数排序
它是一种稳定的排序算法,但有一定的局限性:
1、关键字可分解。
2、记录的关键字位数较少,如果密集更好
3、如果是数字时,最好是无符号的,否则将增加相应的映射复杂度,可先将其正负分开排序。