美文网首页
数据结构-数组基础知识

数据结构-数组基础知识

作者: 今年花开正美 | 来源:发表于2020-06-06 22:42 被阅读0次

    今天开始,我们来复习下数据结构的基础知识。

    定义

    数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。

    线性表就是数据排成一条线一样的结构,每个线性表上的数据最多只有前和后两个方向。而非线性表的数据并非只是简单的前后两个方向。

    线性表包括就是今天要复习的内容,数组、链表、队列、栈。

    非线性表有树、图、堆等。

    随机访问

    按下标随机访问

    直接通过寻址公式,计算出该元素存储的内存地址,时间复杂度是O(1)。

    按值随机访问

    需要遍历数组,O(N)。

    插入

    在有序数组中插入

    为了保持数据的连续性,需要对数据进行搬移,时间复杂度是O(N)。

    在无序数组中插入

    在不需要保持数据连续性情况下,可以先将插入位置的数据搬移到数组末端,再将数据插入。此时时间复杂度就是O(1)。

    删除

    追求连续性

    需要实时搬移数据,时间复杂度就是O(N).

    不追求连续性

    先标记,再一次性删除,时间复杂度就是O(1)。

    选择容器or数组

        ArrayListd的优缺点

        优点:一是将数组操作细节隐藏起来,同时支持动态扩容(1.5倍)。

        缺点:动态扩容时,涉及数组搬移到新数组,比较耗时,无法存放基础类型(只能存放Integer等包装类)。

        什么时候选择数组

    特别关注性能,或者希望使用基本类型。

    如果数据大小事先已知,对数据操作非常简单,不需要用到ArrayList的大部分方法。

    多维数组的时候,使用数组比ArrayList更加直观。

    相关文章

      网友评论

          本文标题:数据结构-数组基础知识

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