-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第二期学习笔记 #2
Comments
时间复杂度分析上为什么需要复杂度分析: 一般通过代码完成之后,再进行时间统计的方法(事后统计法),受环境影响,受数据规模影响.需要不通过具体的数据来测试,就可以粗略估计出算法的执行效率是最好的。 大O时间复杂度:算法代码执行的时间。代码执行时间随数据规模增长的变化趋势。 // 2n+2 ==> O(n)
// 3+n(2+2n) = 2n^2 + 2n + 3 ===> O(n)
分析方法:
三个方法可能同时用到,相互融合 复杂度量级 非多项式量级只有两个:O(2^n) 和 O(n!)。 当数据规模 n 越来越大时,非多项式量级算法的执行时间会急剧增加,求解问题的执行时间会无限增长。 空间复杂度分析 渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。 课后思考题: |
复杂度分析 下最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst case time complexity)、平均情况时间复杂度(average case time complexity)、均摊时间复杂度(amortized time complexity) 不同情况下,不同的时间复杂度 摊还分析法:均摊时间复杂度 最好最坏时间复杂度
最好: O(1) 第一个, 最坏 O(n)不存在 平均时间复杂度发生的概率乘以复杂度, 求和。 加权平均值、即期望值的求法。 均摊时间复杂度
每n个O(1)之后是O(n), 均摊O(1) 对一个数据结构进行一组连续操作中,大部分情况下时间复杂度都很低,只有个别情况下时间复杂度比较高,而且这些操作之间存在前后连贯的时序关系,这个时候,我们就可以将这一组操作放在一块儿分析,看是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上。 课后思考题:
最好: O(1) |
本期学习了复杂度分析的上下两篇文章
The text was updated successfully, but these errors were encountered: