美文网首页
线性数据结构之一维数组

线性数据结构之一维数组

作者: 63537b720fdb | 来源:发表于2020-07-12 21:44 被阅读0次

    线性数据结构也称为一维数据结构,包含一维数组和链表
    线性的数据结构强调的是存储与顺序

    一维数组:


    image.png

    在通常编程时,我们不注意给数组指定长度,JS引擎就会自动给数组扩容,但是扩容的过程非常消耗性能。
    当我们想在数组的最后一位添加数据6,这个过程并不是单纯的创建出一个空间拼到数组的末尾,而是会重新创建一个长度相较于之前数组更长的空数组,再把之前数组的内容复制到新创的数组中,最后添加新数据。
    扩容的过程又分配空间又赋值数据,所以扩容的操作消耗性能。

    扩容的过程:

    1.创建长度更长的新数组


    image.png

    2.复制之前数组的数据


    image.png

    3.添加新数据


    image.png

    扩容的过程消耗性能,所以在创建数组时可以预估长度给数组分配空间。

    一维数组的特征
    1.物理空间上的存储是连续的;
    2.底层的数组长度是不可变的。
    3.数组的变量名指向数组第一个元素的位置。

    从特征出发,介绍一维数组的优点和缺点

    优点:查询性能好,指定查询某个位置。
    缺点:
    1.因为空间必须是连续的,当系统的空间碎片较多的时候,容易存不下。
    2.数组的长度是固定的,不宜做添加和删除的操作。

    优点说明:
    数组的方括号[ ]表示存储地址的偏移
    操作系统中有说明,通过偏移量查询数据性能最好,所以根据一维数组的第3个特征(数组的变量名指向数组的首地址),以首地址+偏移量,就能快速找出数据

    缺点说明:
    1.根据一维数组的第一个特征,由于数组的存储是连续的,当系统存在较多的空间碎片时,导致系统看上去有空间存储数组,但是没有一块连续的空间存储数组,这时系统就要整理空间碎片,非常消耗资源。
    2.由于数组的长度固定,添加数据就是扩容的过程,而删除数据也不是单纯的将该数据删除而已,假如要删除数组中的第三位数据
    删除a[2]的数据


    image.png

    1.首先将该数据删除


    image.png
    2.数组的存储是连续的,所以a[2]不可能是空的,那么就要把后面的数据往前移动
    image.png
    3.删除数组最后一位的空间
    image.png

    所以删除操作和扩容操作都是非常消耗资源的。

    相关文章

      网友评论

          本文标题:线性数据结构之一维数组

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