关于算法的时间复杂度

本文详细介绍了算法的时间复杂度概念,包括基本操作的定义、时间规模的确定以及如何计算时间复杂度。通过实例解析了在不同情况下计算时间复杂度的方法,如循环条件中的变量关系对时间复杂度的影响。

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

一、时间复杂度的概念

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

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

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

二、概念详解

  1. 基本操作
    多数情况下,为最深层循环内的语句所描述的操作。

  2. 时间规模n
    一个算法的运行工作量只取决于问题的规模(通常用n表示)。在算法中,总能找到一个n,一般存在于循环的判断条件中。

三、计算时间复杂度方法

  1. 找出基本操作
    基本操作即为重复执行次数和算法的执行时间成正比的操作,简单的说,就是该语句执行完时,算法也将结束。

  2. 确定时间规模n
    规模n一般可由循环条件获知。循环执行的次数(基本操作执行的次数)和参数n有关,其参数n就是规模n。

例如:
	for(i = 1;i <= n;i++)
	由 i < n 可知,参数n即为时间规模n
  1. 计算出n的函数f(n)
    n确定以后,循环的结束与否和 i 有关。i 的初值为1,每次自增1,假设 i 自增 m 次后循环结束,则 i 的最后值为 1+1×\times×m ,因此有 1+1×\times×m=n,解得 m = n-1 ,即 f(n) = n-1,因此时间复杂度为 T(n) = O(n) 。

四、总结

计算时间复杂度,简单的说就是将算法中基本操作的执行次数作为算法时间复杂度的度量。先找出基本操作,然后确定时间规模,再计算基本操作的执行次数。在计算执行次数时,要根据不同情况,用不同方法计算。

  • 循环主体中的变量参与循环条件的判断
    找出主体语句与T(n)成正比的循环变量,将之带入循环条件中进行计算
  • 循环主体中的变量与循环条件无关
    • 递归程序:一般使用公式进行递推,即采用数学归纳法计算
    • 非递归程序:直接累计次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值