数据结构--时间和空间复杂度

1.算法效率

在数据结构中描述算法的效率有两种方法:一是时间效率,就叫做时间复杂度,二是空间效率,叫做空间复杂度

在计算机发展早期,因为存储容量小,所以空间复杂度就显得很重要,而随着计算机的发展,存储空间已经有了很大的飞跃,所以如今就减少了对空间复杂度的关注,而转向了时间复杂度 

2. 时间复杂度

时间复杂度:一个算法所花费的时间与其中语句的执行次数成正比,所以时间复杂度就是算法中的基本操作的执行次数

时间复杂度不是绝对意义上的快慢,而是随着数据规模的变化,运行时间的变化趋势

2.1  大O的渐进表示法

在实际中,计算时间复杂度不需要计算出精确的执行次数,而只需要大概执行次数,大O渐进表示法就是一个大概描述执行次数的方法

大O符号(Big O natation):用于描述函数渐进行为的数学符号

 大O渐进表示法:

(1)用常数1取代运行时间中的所有加法常数(最高次项化为1)

(2)在修改后的运行次数函数中,只保留最高次项

大O渐进表示法就是去掉后面那些对结果影响不大的项,简洁明了的表示出了执行次数 

 常见的时间复杂度:

所耗的时间从小到大:

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2n)<O(n!)<O(nn)

冒泡排序:O(n),二分查找:O(log2^n)通常写为(logn),阶乘:O(n),斐波那契数列:O(2^n)[很慢]

3. 空间复杂度

空间复杂度是一个算法在运行过程中额外占用存储空间的大小(不考虑输入/输出用到的空间)

空间复杂度也用大O渐进表示法表示

冒泡排序空间复杂度:O(1),斐波那契数列空间复杂度:O(n),阶乘O(n)

常见的时间和空间复杂度总结:

                     

猜你喜欢

转载自blog.csdn.net/weixin_43224539/article/details/88931670