关于时间复杂度

本文介绍了时间复杂度的基本概念,解释了为何在某些情况下O(n^2)算法可能优于O(n),并探讨了如何简化时间复杂度表达式。通过比较不同时间复杂度的处理能力,文章深入讨论了递归时间复杂度,特别是以求解x的n次方为例,从直观的for循环到优化的快速幂算法,揭示了如何将时间复杂度降低到O(logn)。
摘要由CSDN通过智能技术生成

时间复杂度

基本概念

  • 什么是大O:大O是用来表示上界的,用它当做算法最坏的情况的运行时间上限,即对任意数据输入的运行时间的上限
  • O(n^2)的算法为什么有时候比O(n)的算法更优?
    在决定使用算法时,不是时间复杂度越低越好,因为简化后的时间复杂度忽略了常数项,需要考虑数据规模,如果数据规模很小,有时候O(n^2)甚至比O(n)要好(在有常数项的时候)
    如:O(5n^2) 和O(100n) 在n<20之前,O(5n ^2)比O(100n)要快
  • 如何简化复杂的时间复杂度表达式,原理是什么?
    数据量足够大的时候,常数项起不来决定性作用,保留最高项,去掉数量级较小的n
  • O(logn)中的log是以什么为底?
    统一说logn,忽略底数,因为底数可以提取出来
    以2为底n的对数 = 以2为底10的对数 * 以10为底n的对数
    常数项忽略,所以忽略底数

比较

O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n^2)平方阶 < O(n^3)(立方阶) < O(2^n) (指数阶)

不同时间复杂度,在1s内处理能处理的数量级

在这里插入图片描述

递归的时间复杂度

递归的时间复杂度 = 递归的次数 * 每次递归中操作的次数

求x的n次方

最直观的写法,for循环
此时的时间复杂度为O(n)

int fun(int x,int n) {
   
	int result = 1;
	
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 时间复杂度是衡量算法运行时间效率的指标,通常用大O符号来表示。它表示算法执行所需的时间与问题规模之间的增长关系。在计算机科学中,时间复杂度是评估算法效率的一种重要方法,通常越低的时间复杂度意味着算法的效率越高。 ### 回答2: 时间复杂度是对算法运行时间高低的一种度量。它描述了当问题规模n趋于无穷大时,算法所需时间的增长趋势。通过时间复杂度,我们可以比较不同算法的效率,并选择最优算法解决问题。 时间复杂度通常用大O符号表示,例如O(1)、O(log n)、O(n)等。其中,O(1)表示算法执行时间恒定,与问题规模无关;O(log n)表示随着问题规模增长,算法的执行时间以对数形式增长;O(n)表示随问题规模增长,算法的执行时间线性增长。 通过算法的控制结构、循环次数等因素,可以确定算法的复杂度。常见的复杂度有常数复杂度O(1)、对数复杂度O(log n)、线性复杂度O(n)、平方复杂度O(n^2)等。 在算法设计或分析中,我们通常关心的是最坏情况下的时间复杂度。因为在实际应用中,最坏情况往往代表了算法的性能瓶颈。 在选择合适的算法时,需要综合考虑时间复杂度、空间复杂度等因素。较低的时间复杂度通常意味着更高的效率,然而并非所有情况下都需要追求最低的复杂度。有时候,在可接受范围内,平衡时间和空间的利用也是一种更优的选择。 总而言之,时间复杂度是用来衡量算法效率的指标,通过对问题规模的增长趋势进行分析,可以评估算法的时间消耗。在算法设计和选择中,综合考虑时间复杂度、空间复杂度等因素,可以找到最优的算法解决问题。 ### 回答3: 时间复杂度是一种用来评估算法运行效率的指标。它表示算法执行所需要的时间与问题规模之间的关系。具体来说,时间复杂度描述了当问题规模增大时,算法执行时间的增长趋势。时间复杂度并不表示算法的具体执行时间,而是用大O表示法来表示算法的相对执行时间。 在分析时间复杂度时,通常忽略一些常数项和低次项,只关注影响算法运行时间的主要因素。常见的时间复杂度有 O(1)、O(log n)、O(n)、O(n log n)和O(n^2)等。其中,O(1)表示算法的执行时间是常数,即不随问题规模的增大而增加;O(log n)表示算法的执行时间呈对数增长;O(n)表示算法的执行时间与问题规模成线性增长;O(n log n)表示算法的执行时间是线性对数级别;而O(n^2)表示算法执行时间是平方级别的。 通过分析算法的时间复杂度,可以帮助我们选择更加高效的算法来解决问题。一般来说,时间复杂度越低的算法执行效率越高。但需要注意的是,时间复杂度只是一种概念上的评估,并不完全代表算法的实际执行时间,因为实际执行时间还受到计算机硬件、操作系统等因素的影响。 总而言之,时间复杂度是衡量算法执行效率的一种指标,它描述了算法执行时间与问题规模之间的关系。通过分析时间复杂度,我们可以选择更加高效的算法来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值