【5分钟理解】什么是时间复杂度

我们可以看出,以上代码在调用1次函数fn时,内部一共执行2次语句。

那么我们用公式表示:T(n) = 2

n:输入数据的大小或数据量

T(n):当输入为n时,某段代码的总执行次数

或许现在你还仍然有点模糊,不过没关系,我们再看下面一个示例

示例2

在这里插入图片描述

从以上代码可以看出,调用1次函数fn2,就会执行1 +(n+1)+ n + n + 1,也就是3n+1次,用公式表达为:T(n) = 3n+1

但是,作为衡量代码的执行速度的依据,当代码比较多的时候,使用T(n)就有点麻烦了,我们还要一条条语句去数,而且当函数调用函数的时候运算起来也很麻烦,所以算法一般使用T(n)简化的估算值来衡量代码执行的速度,这个简化的估算值就叫做——时间复杂度

2. T(n)如何转换为时间复杂度


2.1 情景一

T(n) = 常数 ——> 1

如果T(n)等于一个常数,那么时间复杂度就是1,换成公式写法:O(1)

示例1的执行次数T(n) = 1,那么它的时间复杂度就为1,换成公式写法:O(1)

2.2 情景二

T(n) = 常数 × n + 常数 ——> n

我们可以直接去掉加号后面的常数,和加号前面的常数(因为随着n的增大,常数的影响力就会越来越小,也就相当于不存在,所以可以直接省略),那么时间复杂度就为n,换成公式写法:O(n)

示例2的执行次数T(n) = 3n + 3,那么它的时间复杂度就为n,换成公式写法:O(n)

2.3 情景三

那么对于多项式

T(n) = 5n³ + 6666n² + 233

我们只需要保留n的最高次项,也就是保留n的次方数最大的那一项,因为随着n的增大,后面的项的增长远远不及n的最高次项大,所以可以直接忽略低次项,接着系数5也要直接去掉,因此时间复杂度就是n³,换成公式写法:O(n³)

3.总结


T(n)是不是常数:

  • 是:时间复杂度O(1)

  • 否:时间复杂度为O(保留T(n)的最高次项并去掉最高次项的系数)

4.归纳几个常见函数的时间复杂度


4.1

function fn() {

console.log(‘我们遇到什么困难都不要怕!’)

console.log(‘微笑地面对他!’)

console.log(‘消除恐惧的最好办法就是面对恐惧!’)

console.log(‘坚持 才是胜利!’)

console.log(‘加油 奥利给!!!’)

}

以上代码没有循环,只有一条条语句,因此时间复杂度是O(1)

4.2

function fn2(n) {

for(let i = 0;i < n; i++) {

console.log(‘hello’)

}

}

像函数fn2这样,只有一个循环,那么它的时间复杂度就是O(n)

4.3

function fn3(n) {

for(let i = 0; i < n; i++) {

for(let j = 0; j < n; j++) {

console.log(‘鸡你太美~’)

}

}

}

fn3函数,内部循环复杂度为n,外部循环则是n × n,因此时间复杂度就位O(n²).

以此我们类推,有a重循环,时间复杂度就为O(n^a)

文末

逆水行舟不进则退,所以大家要有危机意识。

同样是干到35岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说35岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值