【数据结构】算法的渐进分析-渐进时间复杂度

本文介绍了算法分析的重要性,特别是关注渐进时间复杂度。通过大 O 渐进表示法,我们可以忽略次要项,专注于算法的主要时间消耗部分。文中列举了不同函数类型的时间复杂度例子,如线性、平方、指数和常数函数,并介绍了加法和乘法规则,帮助读者掌握如何分析和比较算法的效率。
摘要由CSDN通过智能技术生成

 算法的渐进分析(asymptotic algorithm analysis)简称算法分析。算法分析直接与它所求解的问题的规模 n 有关,因此,通常将问题规模作为分析的参数,求算法的时间和空间开销与问题规模的关系。

渐进的时间复杂度

 计算程序步数的目的是想比较两个或多个完成相同功能的程序的时间复杂度,并估计当问题规模变化时,程序的运行时间如何随之变化。
 要确定一个程序的准确的程序步数是非常困难的,而且也不是很必要。因为程序步数这个概念本身不是一个精确的概念。例如,赋值语句 x=a 和 x=a+b*(c-d)-e/f 居然具有相同的程序步数。
 由于程序步数不能确切的反映运行时间,所以用精确的程序步数来比较两个程序,其结果不一定有价值。前面讨论迭代求和程序与递归求和程序的程序步数时,程序步数为 3n+2 的程序反而比程序步数为 3n+4 的程序运行时间多。但是,当两个程序的程序步数相差很大时,例如一个是 ⌈ log ⁡ 2 ( n + 1 ) ⌉ \lceil\log_2(n+1)\rceil log2(n+1),另一个是 n ∗ ( n − 1 ) / 2 n*(n-1)/2 n(n1)/2 时,明显后者比前者运行时间多。
 因此,如果精确计算有困难,我们只要能够得出一个是 log ⁡ 2 n \log_2n log2n的数量级,一个是 n 2 n^2 n2的数量级,后者比前者运行时间多的结论,也能达到分析的目的。

O O O 渐进表示

  要全面分析一个算法,需要考虑算法在最坏情况下的时间代价,在最后情况下的时间代价,在平均情况下的时间代价。对于最坏情况,主要采用大 O O O 表示法来描述。
  大 O O O 表示法的一般前提是:当且仅当存在正整数 c c c n 0 n_0 n0,使得 T ( n ) ≤ c f ( n ) T(n)\leq cf(n) T(n)cf(n),使得所有的 n ≥ n 0 n\geq n_0 nn0 成立,则称该算法的时间增长率在 O ( f ( n ) ) O(f(n)) O(f(n)) 中,记为 T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) <

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值