1. 如何衡量一个算法的好坏?
时间复杂度和空间复杂度
2. 什么是时间复杂度?
算法中基本操作的执行次数
3. 时间复杂度为什么不使用时间来衡量而使用基本语句的运行次数来衡量?
一个程序在不同的运行环境,执行时间不同;
但是程序单语句的执行次数不变;
4. 时间复杂度的O渐进表示法
1.用常数1取代运行时间中的素有加法常数 2.在修改后的运行次数函数中,只保留最高阶项.3.如果最高阶项存在且不为一,则去除与这个项目相乘的常数.
5. 时间复杂度的:最优、平均、最差情况,为什么时间复杂度看的是最差情况? 一般来说,我们希望获得一个算法的时间效率下限,因为所有人都喜欢某种保证:即算法无论如何不会低于我们保证的效率。这种分析就是所谓的最坏情况分析。最坏情况分析指的是在给定输入尺寸的情况下,一个算法运行的效率的下限。
6. 如何求解:二分查找、递归求阶乘、递归斐波那契的时间复杂度?
二分查找最多需要找logN次 时间复杂度为O(logN)
递归求阶乘基本操作递归了N次 时间复杂度为O(N)
递归斐波那契基本操作递归了2^N次 时间复杂度为O(2^N).
7. 什么是空间复杂度?
临时占用存储空间大小的度量,为变量的个数.
8. 如何求空间复杂度? 普通函数&递归函数
普通函数使用了常数个额外空间空间复杂度为O(1),递归函数递归调用了N次,开启了N个栈帧,空间复杂度为O(N).
9. 分析递归斐波那契数列的:时间、空间复杂度,并对其进行优化,伪递归优化—>循环优化
对于斐波那契额数列的递归:即时间复杂度为 O(2^n)
空间复杂度:递归深度每次递归所需要的辅助空间所以空间复杂度有为o(n)
10. 总结常见时间复杂度
常数阶O(1)
线性阶O(n)
平方阶O(n²)
对数阶O(logn)
线性对数阶O(nlogn)
数据结构入门知识
最新推荐文章于 2024-08-21 21:40:52 发布