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

数据结构-数组基础知识

作者: 今年花开正美 | 来源:发表于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更加直观。

相关文章

  • 扒光 HashMap

    阅读要求:具备一定的数据结构基础知识,例如:数组,链表,二叉树的数据结构以及特性 HashMap 的构成 数组 +...

  • redis笔记

    redis基础知识 数据结构 底层数据结构 SDS 双向链表 压缩列表 跳跃表 Hash表 整数数组 对外数据结构...

  • 1,常见数据结构-数组

    基础知识 数组是具有相同类型的数据的集合,也就是说数组的所有元素的类型都是相同的,在所有的数据结构中,数组算是最常...

  • JDK8中ArrayList源码分析

    ArrayList是一个动态数组,可灵活的增删元素,更改数组 1.前言 前面几章学习了数据结构和算法的基础知识,对...

  • 数据结构-数组基础知识

    今天开始,我们来复习下数据结构的基础知识。 定义 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 4.9Python数据类型(5)列表(新版)

    前言 列表是一种python类似数组的数据结构,操作灵活,可存储多种类型的数据。 目录 1.列表的基础知识2.列表...

  • 重温:数据结构与算法 - 03数组

    数据结构与算法之美 - 数组 数据结构与算法之美-学习大纲 什么数组? 数组是一种 线性表 数据结构。它用一组 连...

  • 关于HashMap,这篇文章已经总结很详细了

    HashMap的底层数据结构? HashMap 是我们非常常用的数据结构,由 数组和链表组合构成 的数据结构。数组...

  • 剑指offer阅读(一)

    数据结构 面试题二: 数组 数组是一种最简单的数据结构,占据一块连续的数据结构并按照顺序存储数据。创建数组时,我们...

网友评论

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

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