手记

【九月打卡】第二天 时间复杂度计算

第一模块:课程介绍

课程名称:JavaScript版数据结构与算法 轻松解决前端算法面试
课程章节:2-1 时间复杂度计算
主讲老师:lewis

第二模块:课程内容

知道什么是时间复杂度,学会对时间复杂度进行计算。

第三模块:课程收获

1。时间复杂度是什么?

一个函数,用大O表示,比如O(1)、O(n)、O(logN)…

定性描述该算法的运行时间

定性说明不是描述具体多少秒,而且一个大概的时间趋势,也就是用上面说的那个函数来表示的。

下面的图片就列举了常见的时间复杂度

几个时间复杂度的说明:

  1. O(1)

下面这个代码,只会执行一次,所以是O(1)

cost a = 0;
a = a + 1;
  1. O(n)

也就是常见的for循环

for(let i = 0; i < nums.length; i++){

}
  1. O(logN)

其实就是以2为底的函数,2的多少次方为null

let i = 1;
while(i < n){
	//O(1)的程序步骤
	i *= 2;
}

因为i每次在乘以2之后和n的差会变得更小,也就是说,在经过n次循环之后,i会大于n然后结束循环,也就是说2的i次方等于n,也就是n = long2n,所以这个循环的复杂度就是O(logN)

举个例子:

以前学的二分法查找

二分法查找一定有一种情况的时间复杂度为log n

因为在最好的情况下,二分法查找的时间复杂度为O(1)也就是一下子就找到了,最复杂的情况,就是O(logN),也就是最坏的情况

  1. 时间复杂度计算

加法:O(1) + O(n) = O(1)

代码示例:像下面的代码的时间复杂度还是O(1)

cost a = 0;
a = a + 1;
for(let i = 0; i < nums.length; i++){

}

乘法:O(n) * O(n) = O(n^2)

for(let i = 0; i < nums.length; i++){
    for(let j = i + 1; j < nums.length; j++){

    }
}

第四模块:课程记录

0人推荐
随时随地看视频
慕课网APP