重温算法-Day1:复杂度分析上

最近加入了个重温算法的群,60天将常用的数据结构和算法过一遍,要求每周至少打卡3次。在时间允许的情况下,每天晚上看上1到2个小时,巩固算法还是很不错的。在重温的同时,我将笔记整理到到此。

 

打卡Day1:今天学复习了“复杂度分析上”,整理如下:

决定算法快慢的因素有很多,但是所有的因素可以分为两类。第一类是不随数据量变化的因素,第二类是随着数量变化的。


数据结构和算法的目的是减少资源占用和响应时间,提高执行效率。
因此,需要有统计资源占用和响应时间的考量指标。于是,空间复杂度和时间复杂度就诞生了。

时间复杂度
T(n)=O(f(n))
1.执行时间 T(n) 与每行代码的执行次数 n 成正比;
2.n 表示数据规模的大小;
3.f(n) 表示每行代码执行的次数总和;
4.O表示代码的执行时间 T(n) 与 f(n) 表达式成正比
 
分析方法:
1. 只关注循环执行次数最多的一段代码
2. 加法法则:总复杂度等于量级最大的那段代码的复杂度。示例:
如果 T1(n)=O(f(n)),T2(n)=O(g(n));
那么 T(n)=T1(n)+T2(n)=max(O(f(n)), O(g(n))) =O(max(f(n), g(n))). 
3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积。示例:
T(n) = T1(n) * T2(n) = O(n*n) = O(n2)

空间复杂度分析
表示算法的存储空间与数据规模之间的增长关系

数据结构和算法的复杂度都跑不出这几个
O(logn):
O(n):最常见的一维数组遍历,链表遍历
O(nlogn):归并,快排
O(n2):冒泡,插入

学习复杂度不是浪费时间:不懂复杂度分析的性能测试都是碰运气,性能好的原因是什么,不好的原因又是什么,还是要回到复杂度分析上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值