美文网首页数据结构
针对封装数组的简单复杂度分析

针对封装数组的简单复杂度分析

作者: wfaceboss | 来源:发表于2019-03-29 11:17 被阅读1次

完成了数组的封装之后我们还需对其进行复杂度分析:
此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。
1.简单概念

image.png
** 2.大O简单定义(非数学领域)**
大O描述的是算法运行时间和输入数据之间的关系
3.简单程序时间复杂度分析
image.png
在上述中算法和n呈线性关系,那为什么要使用大O呢?称作O(n)?
其实上述的程序中,实际的实际时间复杂度:T = c1*n + c2,在这里忽略了常数c1和c2。
因此:算法和N呈线性相关,取n的高阶项,因为当n趋于无穷大的时候,低阶项起的作用很小。
4.对动态数组的时间复杂度进行分析
(1)动态数组添加操作时间复杂度分析
(1)addLast(e)方法 :只需在最后位置添加 时间复杂度 为O(1)
(2)addFirst(e)方法,数组中均需向后移动一位 时间复杂度 为O(n)
(3)add(index,e)方法,在index位置插入e,时间复杂度与选择的位置有关,选择最后时间复杂度 为O(1);选择第一个位置时间复杂度 为O(n);对于其他情况与概率有关,在平均情况下只需要移动n/2个位置 时间复杂度 为O(n/2)=O(n)
总的来说:数组添加的时间复杂度为O(n)(最坏情况考虑)
在添加的时候可能会触发resize方法,需要移动n个元素到新数组中 时间复杂度 为O(n)
image.png
(2)动态数组删除操作时间复杂度分析
相同的分析方法,可以得出删除操作的时间复杂度
image.png
(3)动态数组修改操作时间复杂度分析
对于修改,只要通过索引找到即可进行修改,时间复杂度为O(1)
image.png
(4)动态数组查找操作时间复杂度分析
image.png
动态数组时间复杂度分析总结:
image.png
关于resize方法,我们完全使用最坏情况分析是不合理的,其分析情况我们将在下一节进行学习~

相关文章

  • 针对封装数组的简单复杂度分析

    完成了数组的封装之后我们还需对其进行复杂度分析:此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序...

  • 复杂度分析(时间)

    动态数组9 链表 动态数组add(E element)复杂度分析 均摊复杂度经过连续的多次复杂度比较低的情况后,出...

  • 模块2作业 朋友圈高性能复杂度

    分析一下微信朋友圈的高性能复杂度 【作业要求】对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;针对各个...

  • 架构训练营模块二作业

    分析一下微信朋友圈的高性能复杂度【作业要求】 对照模块2讲述的复杂度分析方法,分析微信朋友圈的复杂度。 针对各个复...

  • 用数组实现栈

    用数组实现栈,详细代码如下: 复杂度分析时间复杂度 : push 和 pop 均为:O(1)空间复杂度 : pus...

  • 复杂度分析

    为什么需要复杂度分析? 大O复杂度表示法 时间复杂度分析 常见复杂度量级 复杂度量级简单说明 空间复杂度 时间复杂...

  • 寻找数组中第K大的元素

    问题 tag: Medium 分析 这题最简单的做法是将数组排序,然后直接返回第K大的元素。复杂度为:O(Nlog...

  • 用数组实现队列

    用数组实现队列,详细代码如下: 复杂度分析时间复杂度 : enqueue 和 dequeue 均为:O(1)空间复...

  • 2020-02-05 刷题2(数组)

    189 旋转数组 数组整体移位的题目。最简单的就是,用另一个数组来暂时存放,时间复杂度O(n), 空间复杂度O(n...

  • 数据结构-链表

    章节 动态数组 & 栈 & 队列 与 链表的不同 链表特性 & 图示 链表实现 & 各操作时间复杂度分析 动态数组...

网友评论

    本文标题:针对封装数组的简单复杂度分析

    本文链接:https://www.haomeiwen.com/subject/gbzkbqtx.html