【前端算法系列】时间复杂度和空间复杂度

时间复杂度

O(1) 一次就够(执行一次计算)
O(n) 和传输的数据量一样
O(n^2) 数据量的平凡 (比如n为2,cpu计算4次)
O(logn) 数据量的对数 (比如输入100,计算10次,1010=100) 比如二分查找,每次砍掉二分之一
O(n
logn) 数据量数据量的对数 (比如输入100,计算10次,1010=100)

// 1. O(1) :这两行代码只会被执行一次,没有循环
let i=0
i +=1

// 2. O(n) :循环n次,即cpu计算n次
for(let i=0;i<n;i+=1){
	console.log(i)
}

// 3. 两个时间复杂度先后排列,取增长趋势更快的时间复杂度 O(1)+O(n)=O(n)
let i=0
i +=1
for(let j=0;j<n;j+=1){
	console.log(j)
}

// 4. O(n)*O(n)=O(n^2) 
for(let i=0;i<n;i+=1){
	for(let j=0;j<n;j+=1){
		console.log(i, j)
	}
}

// 5. O(logN):以2为底的logN   2的多少次方为N
let i=1
while(i<n){  // 不断乘以2,直到大于或等于n,就是在求2^1,2^2...2^i=n
	console.log(i)
	i*=2
}

// 6. O(n*logn) 
for(){ // 一个嵌套一个二分
	// 二分
}

空间复杂度

  • 空间复杂度和时间复杂度一样,也是一个函数,用大O表示,O(1)\O(n)\O(n^2)
  • 算法在运行过程中临时占用存储空间大小的量度(代码占用存储空间越小,代码就越好)
// 1. O(1):只声明了单个变量,单个变量所占内存永远是1
let i=0
i+=1

// 2. O(n):声明一个数组,给数组添加n个值,相当于占用了n个内存单元
const list=[]
for(let i=0; i<n;i+=1){
	list.push(i)
}

// 3. O(n^2):矩阵,嵌套两层的数组,存储了n^2次方个变量
const matrix=[]
for(let i=0;i<n;i+=1){
	martix.push([])
	for(let j=0;j<n;j+=1){
		matrix[i].push(j)
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值