1、排序算法介绍:
排序也称排序算法(SortAlgorithm),排序是将一组数据,依指定的顺序进行排列的过程。
2、排序的分类:
1)内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。
2)外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。3)常见的排序算法分类(见下图):
3、算法的时间复杂度:
1.度量一个程序(算法)执行时间的两种方法:
1)事后统计的方法这种方法可行,但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。
2)事前估算的方法通过分析某个算法的时间复杂度来判断哪个算法更优.
2.时间频度
基本介绍:
时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
3.平均时间复杂度和最坏时间复杂度
1)平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间。
2)最坏情况下的时间复杂度称最坏时间复杂度。一般讨论的时间复杂度均是最坏情况下的时间复杂度。这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的界限,这就保证了算法的运行时间不会比最坏情况更长。
3)平均时间复杂度和最坏时间复杂度是否一致,和算法有关。
4、常用排序算法总结和对比:
相关术语解释:
1)稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
2)不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
3)内排序:所有排序操作都在内存中完成;
4)外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
5)时间复杂度:一个算法执行所耗费的时间。
6)空间复杂度:运行完一个程序所需内存的大小。
7)n:数据规模
8)k:“桶”的个数
9)In-place:不占用额外内存
10)Out-place:占用额外内存
5、常用排序算法索引:
1.[冒泡排序] (https://www.jianshu.com/p/c1d5df986e93)
2.[选择排序] https://www.jianshu.com/p/0dfebd54d722
3.[插入排序] https://www.jianshu.com/p/8e8032e69719
4.[希尔排序] https://www.jianshu.com/p/a5880551cbe3
5.[快速排序] https://www.jianshu.com/p/e1bea2c76ee3
6.[归并排序] https://www.jianshu.com/p/9beccc255cb7
7.[基数排序] https://www.jianshu.com/p/7e79f97a8dde