Android Developer

Java时间复杂度

概念

程序=数据结构+算法。算法是解决问题的步骤,一个问题可能有很多种解决的方法,这时候我们可以用时间复杂度来衡量这些不同解决办法的好坏。

计算过程

  • 计算每行一句的执行次数;

  • 计算出所有语句的执行次数总和,推导出一个n的表达式T(n);

  • 找出同数量级的表达式;

使用一段代码来说明:

for i in range(n):  //执行n次
	for j in range(10): //执行n*10次
		print(i, j) //执行n*10次		

理解一下上述代码:

  • 外层for循环执行的次数为n,内层for循环执行的次数为n * 10,print语句的执行次数也是n * 10

  • 形成的表达式:T(n) = n + n * 10 + n * 10 = 21n

  • 同数量级:n

  • T(n)/n = 21, 是一个常数,所以此算法的时间复杂度为n

表示

在计算机科学中,算法的时间复杂度是一个函数,它藐视了该算法的运行时间,时间复杂度常用大O符号(大O符号(是用于描述函数渐进行为的数学符号,意思是order of(大约是))表示

那么上一步算法的时间复杂度可以标记为O(n)

几种类型

O(1): 常数

print(n) //执行一次,所以时间复杂度为O(1)

reference:

最通俗易懂的时间复杂度

JAVA算法:五分钟理解算法的时间复杂度