渐进复杂度

1.算法定义:对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。
算法描述:自然语言 流程图 伪代码 程序代码
2.算法效率(好的算法具备正确性,健壮性和可读性)
时间效率:指的是算法所耗费的时间
空间效率:指的是算法执行过程中所耗费的存储空间
时间效率与空间效率有时候是矛盾的。
3.算法时间效率的度量:事后统计(将算法实现,测算时间)和事前分析(对算法耗费资源的一种估算)
算法运行时间=一个简单操作时间*简单操作次数
(每条语句频度 * 该语句执行一次所需的时间)
例如 (将一次时间看为单位时间):

for (i=1;i<=n;i++)//n+1次
for(j=1;j<=n;j++){ //n(n+1)次
c[i][j]=0;//n*n次
for (k=0;k

若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=Of(n),称Of(n)为算法的渐进时间复杂度,简称时间复杂度。
分析算法中次数最多的语句就可以分析渐进时间复杂度。
4定理
取最高次数方为O(n)

x=0;y=0
for (int i=1;i

时间复杂度是由嵌套最深层语句的频度决定。

for (i=1;i<=n;i++)//n+1次
for(j=1;j<=n;j++){ //n(n+1)次
c[i][j]=0;//n*n次
for (k=0;k

渐进复杂度_第1张图片
渐进复杂度_第2张图片
5渐进空间复杂度
算法要占据的空间:算法本身要占据的空间,输入,输出,指令,常数,变量等以及与算法所需要的辅助空间。
例如:
将一维数组中a中的n个数逆序放到原数组中
6.抽象数据类型=数据的逻辑结构+抽象运算(运算的功能描述)

你可能感兴趣的:(算法)