数据结构要点总结——02算法和算法分析

1.算法

算法:是指对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

算法的五个重要特性:有穷性、确定性、可行性、输入、输出。

算法的要求:正确性、可读性、健壮性、效率与低存储量需求。

程序=数据结构+算法

【接下来着重介绍算法的时间复杂度·】

*算法的时间复杂度是用作算法效率的度量使用,因为不同计算机运算同一程序所用时间也不同,所以耗时并不能用作算法效率的度量。

     一般情况下,算法中基本操作重复执行的次数就是问题规模n 的某个函数f(n),算法的时间量度记作:

                                                         T(n)=O(  f (n)  )

他表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度

语句的频度指的是该语句重复执行的次数。

void Loveyou(int n){//n为问题规模
int i=1;                 //(1)
while(i<=n){             //(2)
     i++;                //(3)
     print("I love you %d times",i); //(4)
  }
}

上述程序片段中n为问题规模,(1)语句的频度为1次;(2)语句的频度为n+1次;(3)语句的频度为n次;(4)语句频度为n次。

程序时间开销与问题规模的关系为:T(n)=3n+2

当然,真实情况下程序的时间开销与问题规模之间的关系可能会更复杂,如:

T1(n)=3n+2

T2(n)=3n*2+2

T3(n)=3n*3+3n*2+2

对于这种相加的表达式在简化出时间复杂度O(n)时,采用的策略时只取最高阶,如:

O1(n)=n

O2(n)=n*2

O3(n)=n*3

而对于相乘的表达式时,采取的策略时都保留,一下为口诀:

(a)加法规则:多项相加,只保留最高阶且系数变为1

T(n)=T1(n) + T2(n) = O(f(n))+O(g(n))=O( max ( f(n) , g(n) ) )

  (b)乘法法则:多项相乘都保留

T(n)=T1(n) × T2(n) = O(f(n))×O(g(n))=O(   f(n)×g(n)  )     例:T3(n)=n*3 + n*2log2*n

                                                                                                              =O(n*3)+O(n*2log2*n)

O(常数) < O(log2*n) < O(n) <O(n×log2*n) <O(n*2) < O(n*3) < O(2*n) < O(n!) < O(n*n)

    时间复杂度从低到高口诀:常对幂指阶

算法的空间复杂度考点较少:
S(n)=O( f (n) )

什么叫算法原地工作:算法的存储空间为常量。

下一节:线性表

个人原创要点总结,部分内容包含个人见解,如有错误请指出!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值