开发者社区> 问答> 正文

JavaScript中unshift()与push()的时间复杂度

我知道JavaScript unshift()和push()方法之间的区别是什么,但是我想知道时间复杂度有什么区别?

我想push()方法是O(1),因为您只是将一个项目添加到数组的末尾,但是我不确定unshift()方法,因为,我想您必须将所有其他现有元素“向前移动”,并且我想那是O(log n)或O(n)? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 13:20:05 1663 0
1 条回答
写回答
取消 提交回答
  • 据我所知,JavaScript语言规范并未规定这些功能的时间复杂性。

    当然可以用O(1)push和unshift操作来实现类似数组的数据结构(O(1)随机访问)。C ++ std::deque就是一个例子。因此,使用C ++双端队列在内部表示Javascript数组的Javascript实现将具有O(1)push和unshift操作。

    但是,如果您需要保证这样的时间范围,则必须自己动手,如下所示:

    http://code.stephenmorley.org/javascript/queues/

    2020-02-09 13:20:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript函数 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载