如何分析一个“排序算法”

一、排序算法的执行效率

最好、最坏、平均情况时间复杂度

对于要排序的数据,有的接近有序,有的完全无序。

有序度不同的数据,对于排序的执行时间肯定是有影响。

我们需要了解排序算法在不同数据下的性能表现

同一阶时间复杂度的排序算法性能对比,不要忽略系数,常数,低阶

时间复杂度反应的是数据规模 n 很大的时候的一个增长趋势,所以它表示的时候会忽略系数、常数、低阶。

但是在实际我们使用排序算法中,排序的可能是 10 个、100 个、1000 个这样规模很小的数据,

所以,在对同一阶时间复杂度的排序算法性能对比的时候,我们就要把系数、常数、低阶也考虑进来。

比较次数和交换(或移动)次数

基于比较的排序算法的执行过程,会涉及两种操作,一种是元素比较大小,另一种是元素交换或移动。

在分析排序算法的执行效率的时候,应该把比较次数和交换(或移动)次数也考虑进去。

二、排序算法的内存消耗

我们需要分析排序算法的空间复杂度,分析算法是原地排序或非原地排序。

原地排序:特指空间复杂度是 O(1) 的排序算法

三、排序算法的稳定性

比如我们有一组数据 2,9,3,4,8,3,按照大小排序之后就是 2,3,3,4,8,9。这组数据里有两个 3。

经过某种排序算法排序之后,如果两个 3 的前后顺序没有改变,那我们就把这种排序算法叫作稳定的排序算法;

如果前后顺序发生变化,那对应的排序算法就叫作不稳定的排序算法。

发布了91 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42006733/article/details/104377653