算法的时间复杂度分析

本文详细探讨了算法的时间复杂度分析,包括语句频度、输入规模与算法执行时间的关系,以及如何计算时间复杂度。同时,介绍了递归函数的时间复杂度分析,通过举例说明了递归方程的迭代法,展示了不同类型的递归调用形式及其时间复杂度计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法的时间复杂度分析 & 递归函数时间复杂度分析

算法的时间复杂度分析

1.算法耗费的时间、语句频度、输入规模
在实际中,一个算法所需耗费的时间 = 算法中所有语句的执行时间之和
而,
每条语句的执行时间= 每条语句执行一次所需时间 * 每条语句的执行次数(语句频度);

因为每条语句执行一次所需时间取决于机器执行指令的性能、速度等难以确定的因素,而为了独立于机器的软、硬件系统来分析算法的时间耗费,
我们假设每条语句执行一次所需时间均为单位时间,那么,一个算法的时间规模就与其所有语句的频度之和相关。

输入规模:算法求解问题的输入量称为问题的规模,一般用一整数来表示:n = 1, 2, 3 …k

那么,对于输入规模为 n 的算法,其语句频度之和可记作:T(n)
例:
(1) for(i=0; i<n;j++) n+1
(2) for (j=0;j<n;j++) n(n+1)
(3) C[i][j]=0; n^2
(4) for (k=0; k<n; k++) n^2(n+1)
(5) C[i][j]=C[i][j]+A[i][k]*B[k][j]; n^3
分析:
语句(1)的循环控制变量i要增加到n,测试到i=n成立才会终止。故它的频度是n+1。但是它的循环体却只能执行n次。
语句(2)作为语句(1)循环体内的语句应该执行n次,但语句(2)本身要执行n+1次,所以语句(2)的频度是n(n+1)。
同理可得语句(3),(4)和(5)的频度分别是n^2,n^2(n+1)和n^3。
该算法中所有语句的频度之和(即算法的时间耗费)为: T(n)=2n^3+3n^2+2n+1 (1.1)
2. 时间复杂度
概念:
如某算法的语句频度之和为 T(n),那么,当 n 趋于无穷大虹,若存在函数 f(n)使得 T(n)/f(n)的极限值为不等于0的常数, 则称: f(n) 是 T(n) 的同数量级函数,记作:T(n) = O(f(n)) 称: O(f(n)) 为该算法的渐进时间复杂度,简称时间复杂度。
举例说明时间复杂度的求法:
交换i和j的内容。
Temp=i;
i=j;
j=temp;
以上三条单个语句的频度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值