最大k乘积的时间复杂度_数据结构与算法 - 时间和空间复杂度

关注:架构师学习路线,每日更新互联网最新技术文章与你不断前行,实战资料,笔试面试

时间复杂度

在数据结构和算法中,有两种方法来衡量时间复杂度

  • 事后统计法
  • 大O复杂度表示法

事后统计法

把代码实际跑一遍,然后分析,统计和监控算法执行的时间和占用的内存大小。但是这种方法有很大的局限性

  1. 测试结果非常依赖测试环境: 测试环境的硬件不同会对结果有很大的影响,比如相同的代码在不同的处理器结果肯定不同
  2. 测试结果受测试数据的规模大小的影响: 比如对同一个排序算法,待排序数据的有序度不一样,排序的执行时间就会有很大的差别。另外,如果测试数据过小,也可能无法真是反应算法的性能,比如对于小规模的数据排序,插入排序可能反倒比快速排序要快

大O时间复杂度表示法

时间复杂度的分析方法:

  1. 只关注循环执行次数最多的一段代码
  2. 加法法则:总复杂度等于量级最大的那段代码的复杂度
  3. 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积

常见的时间复杂度分析

25b30a5b313cfd354652480a72859cb4.png

复杂度的量级有可以分为 多项式量级非多项式量级

  • 非多项式量级:O(2^n) 和 O(n!),非常低效的算法,执行时间会随数据的规模急剧增加
  • 多项式量级:剩下的

1. O(1)

一般情况下,只要算法的代码中,不存在循环语句,递归,即使代码有很多,时间复杂度也是O(1)

O(logn), O(nlogn)

在采用大O复杂度分析的情况下,可以忽略系数,比如 O(Cf(n)) = O(f(n))

O(m+n), O(m*n)

因为m,n两个数据规模,我们无法评估谁的规模比较大,所有我们不能省略某一个

空间复杂度

常见的空间复杂度有 O(1),O(n),O(n^2),O(logn),O(nlogn)。空间复杂度相对比较简单,而且一般使用到的都是O(1),O(n),O(n^2)。

复杂度比较分析

02627da0a6e1f0dc6d1b0540a5b1fd1d.png

关注:架构师学习路线,每日更新互联网最新技术文章与你不断前行,实战资料,笔试面试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值