时间复杂度:是指执行算法所需要的时间
常见的时间复杂度有(按复杂度有低到高):
常数阶O(1) < 对数阶O(log2n) < 线性阶O(n) < 线性对数阶O(nlog2n) < 平方阶0(n^2) < 立方阶0(n^3) < ……k次方阶0(n^k) < 指数阶0(2^n)
复杂度越大,算法的执行效率越低
求算法时间复杂度的方法:
①、找出算法中的基本语句:
算法中执行次数最多的语句就是基本语句,通常是最内层循环的循环体
②、计算基本语句的执行次数的数量级
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数是函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数,这样就能够简化算法分析
③、用大O记号标书算法的时间性能
将基本语句执行次数的数量级放入大O几号中
注:若果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列循环的时间复杂度相加
④、计算时间复杂度的法则:
(1)、简单的输入输出语句或是赋值语句,近似为O(1)
(2)、顺序结构,需要依次执行一系列语句所用的时间可以采用求和法则
求和法则:假设算法的2部分的时间复杂度分别为O(f((n))和O(g(n)),则时间复杂度为O(max(f(n) , g(n)))
(3)、选择结构,如if语句,它的时间主要消耗在执行else字句上,时间复杂度为O(1)
(4)、循环结构的运行时间主要体现在多次迭代中执行循环体以及检验循环条件是否成立,时间复杂度由乘法法则求得
乘法法则:若算法的2部分时间复杂度分别为O(f((n))和O(g(n)),则时间复杂度为Of(n)*g(n))
(5)、如果结构过于复杂,可以将其分成几个容易估算的部分,然后利用求和法则和乘法法则求整个算法的时间复杂度
举例:<