一、什么是算法分析
程序和算法的区别:
算法是对问题解决的分步描述
程序是采用某种编程语言实现的算法,同一个算法通过不同的程序员采用不同的编程语言,能产生很多程序
算法分析的概念:
算法分析主要就是从计算资源消耗的角度来评判和比较算法
更高效利用计算资源,或者更少占用计算资源的算法,就是好算法
计算资源指标:
一种是算法解决问题过程中需要的存储空间或内存
另一种是算法的执行时间
运行时间检测:
1 #累计求和程序的运行时间检测
2 #迭代法
3 importtime4
5 defsum1(n):6 start =time.time()7 theSum =08 for i in range(1,n+1):9 theSum +=i10 end =time.time()11 return theSum, end -start12
13 for i in range(5):14 print('Sum is %d required %10.7f seconds'%sum1(10000))
n = 10000 时,执行5次的结果为
Sum is 50005000 required 0.0000000seconds
Sumis 50005000 required 0.0009980seconds
Sumis 50005000 required 0.0000000seconds
Sumis 50005000 required 0.0000000seconds
Sumis 50005000 required 0.0009968 seconds
n = 100000 时, 执行5次的结果为
Sum is 5000050000 required 0.0049877seconds
Sumis 5000050000 required 0.0049853seconds
Sumis 5000050000 required 0.0049860seconds
Sumis 5000050000 required 0.0049872seconds
Sumis 5000050000 required 0.0049863 seconds
n = 1000000时,执行5次的结果为
Sum is 500000500000 required 0.0528579seconds
Sumis 500000500000 required 0.0518231seconds
Sumis 500000500000 required 0.0528951seconds
Sumis 500000500000 required 0.0519009seconds
Sumis 500000500000 required 0.0527823 seconds
1 #累计求和程序的运行时间检测
2 #利用高斯求和公式的无迭代算法
3 importtime4
5 defsum2(n):6 start =time.time()7 theSum = (n * (n+1)) / 2
8 end =time.time()9 return theSum, end -start10
11 for i in range(5):12 print('Sum is %d required %10.7f seconds'%sum2(10000))
n = 10000,100000,1000000时,执行5次的结果时间均相同,为0.0000000 seconds
比较ÿ