为了评判一个算法的好坏 因为在不同机器在不同的语言 在不同的编译器下等等等各种因素影响,我们不便进行评判,因此引出时间复杂度和空间复杂度。
O(n)大O表示法:因为计算机的运算量很大所以只关心每个数的数量级即可,
计算方法:只保留最高阶的n并且把系数化为1。
用以下的表来判断最高阶
数学函数表示
口诀:常对幂指数阶
结论1:顺序执行的语句只是影响常数项,可以忽略。
结论2:只需要关心循环中的一条基本操作区分析他的执行次数与n的关系即可。
如果是嵌套循环呢?
把内层和外层乘起来n^2
只关心最内层与n的关系
练习
循环里面不是加而是✖️
假设循环了x次
2^x=n
空间复杂度
原地工作--算法所需的内存不变
和时间复杂度同样的方法,因为计算机是对大量的数据进行处理,所以这种衡量只关系数量级就行。
递归函数分析