关于pop和unshift

来源:2-6 把一个数组旋转 k 步-性能分析

蹲蹲侠

2022-02-22

pop() 也改变了原数组,pop和unshift在一级 用在for循环中 也算O(n^2)吗

写回答

2回答

前端老师傅

2022-02-22

同学你好,广义上来讲数组是一段连续的内存空间,创建一个数组的本质就是在内存空间开辟一段连续的空间,既然是连续的,当你使用pop()的时候,相当于把尾部的数据的引用清除,所以时间复杂度可以忽略不计,但是你如果采用unshift()插入一条数据的时候,假设该数组长度为n,那么此时对应数组的全部索引全部向后n+1(相当于一次遍历),时间复杂度O(n),数据越多越明显.

(个人理解,如果有误欢迎指正)

1
0

蹲蹲侠

提问者

2022-02-22

那是不是计算复杂度的时候不是所有改变数组的数组函数(splice,fill,sort,push,pop,shift,unshift等)都是复杂度O(n),还有看该函数具体作用

0
1
前端老师傅
差不多,但是js引擎对于这些方法有特别优化,但是总体不会有太大区别的
2022-02-22
共1条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程