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

线性数据结构之一维数组

作者: 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

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

相关文章

  • 线性数据结构之一维数组

    线性数据结构也称为一维数据结构,包含一维数组和链表线性的数据结构强调的是存储与顺序 一维数组: 在通常编程时,我们...

  • Java数据结构和算法概览

    Java数据结构和算法概览 数据结构 线性数据结构:常见的有一维数组,线性表,栈,队列,双队列,串。 非线性数据结...

  • 2020-07-02

    算法和数据结构梳理 线性表 顺序表数组(移动、原地操作、前缀和)多数组(合并 交集二维数组(旋转、数独、染色、置零...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

  • 数据结构——基本数据结构

    线性结构 线性结构考虑为数轴的一维结构,也就是只有前后的概念,而你对于前后的实现决定了两种基本的线性数据结构:数组...

  • 数据结构简要

    数据结构与算法 几种常见的数据结构 线性表(数组和链表)、栈、队列和树(二叉树) 一.线性表 1.数组 数组是...

  • Java链表

    一、链表介绍 数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构。数组作为...

  • 树的实现

    前面写那么多文章都是是线性数据结构的探索.无论数组,链表,栈,队列都是线性数据结构我们看到了线性数据结构的大多数时...

  • 1 基本数据结构:数组与链表

    线性表基本概念 线性表是最基本、最简单、最常用的一种数据结构之一。在实际应用中,线性表都是以数组、字符串、链表、栈...

  • 常见数据结构和算法

    常见数据结构 线性数据结构(按顺序具有数据元素的数据结构):数组,堆栈,链表(单链表 双链表),队列非线性数据结...

网友评论

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

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