一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情。
前言
排序算法是我们学习的常用算法之一,我们日常生活中有学习到各种各样的排序算法,例如冒泡排序,插入排序,快速排序等等,这些排序算法可以有效的解析我们业务场景中的数据顺序问题,那么我们怎么来分析一种类型的排序算法的有效性以及适用场景呢?
排序算法分析
一个算法的执行效率分析,最最最重要的部分就是它的时间复杂度分析,时间复杂度可以反应出这个算法最核心的性能,所以我们要从最好情况时间复杂度,最坏情况时间复杂度,平均情况时间复杂度进行全面分析的,比如我们使用了几乎接近于有序数据或者是完全无需。有序度不同的排序数据,对于排序的时间会有影响的。同时我们也会考虑数据规模的增长趋势对于排序的影响,假如n的数值十分巨大,这种情况就可以忽略系数,常数。但是n的数据量不大几千或者几万。系数将对排序性能进行的影响。所以我们也需要考虑。还有就是比较次数和数据的交换次数也是衡量排序算法性能的重要元素,
排序算法内存的消耗
算法的内存消耗是由空间复杂度来进行衡量的。所以有些排序算法就是我们所称的原地排序。原地排序类型的算法就是指空间复杂度为O(1)的排序算法的。之前前面文章提供的冒泡排序就是原地排序。
排序算法稳定性
假如用执行效率和内存消耗来衡量排序算法的好坏是不足够的。对于排序算法,还有一个重要的度量指标,就是稳定性。这个概念是说,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。
总结
通过这三种方式的排序分析,我们就可以分析出一个排序算法性能的好坏。