1.时间复杂度
分析:当算法执行n此的时候,观察里面的循环,也是执行n次。所以算法的时间复杂度为O(n)
分析:找到最内层额的循环,循环n次,往外面找,还嵌套了有一层循环,所以应该是O(n平方 )
分析:
分析:观察最内层循环的基本语句,发现是一个判断,不难发现,当最好的情况时,第一次就找到,只需要执行1次,当最坏情况,需要执行n次,平均就是执行n/2次,所以是O(n)
总结:
2.空间复杂度
分析:当程序装入内存的时候,所占空间大小是固定的,与问题规模无关,通过分析,程序需要的辅助空间有局部变量i还有参数n,都是占固定的存储空间,所以空间复杂度S(n)=O(1)
分析:与问题规模相关的变量是flag数组,S(n)=O(n的平方)
递归调用带来的内存开销
例如:从n=5开始执行,每次递归调用会开辟一块空间,每块空间也都有变量abc,开辟的空间是固定的,所以当问题规模大小为n时,就会开辟n块空间,所以S(n)=O(n)
总结:
注意:时间复杂度T(n)=O()表达的意思是执行时间和成正比
3典型例题