1.4.3 算法的时问复杂度
空间效率和时间效率矛盾。
事后统计法; 缺点:客观因素影响
事前分析估算法;
语句的重复执行次数(语句频度)和执行一次所需时间的乘积;
一个算法的执行时间大致上等于其所有语句执行时间的总和;
每条语句执行一次所需的时间,一般是随机器而异的。取决于机器的指令性能、速度以及编译的代码质量。是由机器本身软硬件环境决定的,它与算法无关。(利用单位时间内制和语句频度可脱离计算机环境来比较时间性能)
例:求两个n阶矩阵的乘积算法。
优化:只比较数量级(渐进时间复杂度O(f(n)))
T(n)=O(f(n)) T(n)是f(n)的同数量级函数
O-Order
T(n)=O(n^3)
所以,看最内层循环(基本语句)叠加次数即可(抓大头)
基本语句的特点:
算法中重复执行次数和算法的执行时间成正比的语句;
对算法运行时间的贡献最大;
执行次数最多;
问题规模n:
找高次,去系数。
例:
x=0;y=0; for(int k=0;k<n;k++) x++; for(int i=0;i<0;i++) for(int j=0;j<n;j++) y++;
f(n)=n(n+1)
T(n)=O(n^2)
立方阶:
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for(k=1;k<=j;k++)
x=x+1;
T(n)=O(n^3)
O(lgn)也可