美文网首页
数据结构-数组

数据结构-数组

作者: TioSun | 来源:发表于2020-07-20 10:25 被阅读0次

数组是非常常见且日常工作中十分常用的一种数据结构。

什么是数组

数组是一种线性表数据结构,它用一组连续的内存空间存储一组相同数据类型的数据

数组具有一下特性:

  1. 连续的内存空间
  2. O(1)时间复杂度的随机读取

数组支持随机访问的原因是因为可以通过base_address算出目标位置的内存地址
a[i] = base_address + i*data_type_size

因为数组要求内存空间连续,所以导致它的插入或删除动作十分低效,因为要在a[j]数组中的i位置(0<=i<=j)插入一个数据,需要将a[i] - a[j]的数据都往后移动一位(涉及扩容)然后将数据放入a[i]位置(删除类似),所需的平均时间复杂度是O(n)。

常用的优化方式:
插入时(前提是数组无序),会采取将待插入位置的原数据放置数组末尾,然后将待插入数据插入,时间复杂度为O(1)。
删除时(前提是不追求数据连续性),会采取标记删除的方式,将需要删除的数据记录下来,等数组容量不足时再统一删除,这样可以减少多次删除带来的时间损耗,提高删除的效率。

相关文章

  • 数据结构:数组

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

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

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

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

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

  • 剑指offer阅读(一)

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

  • HashMap原理基础

    数据结构分析 数据结构:数组+链表(或红黑树) 数组:Entry implements Map.Entr...

  • Kotlin数据容器(1)✔️数组

    对象数组基本数据类型数组   数据容器是基于某种数据结构的,常见的数据结构有数组 (Array)、集 (Set)、...

  • ArrayList、LinkedList、Vector的区别

    1.从存储数据结构分析 ArrayList:数组 Vector:数组 LinkedList:双向链表数组:(数组属...

  • ArrayList和LinkedList——数组VS链表

    一、数据结构 1.1 数组 ArrayList是一种数组类型的数据结构,数组是内存中一段地址连续的空间。 我们使用...

  • ConcurrentHashMap 1.7和1.8的区别

    一、1.7中数据结构 Segment数组 + HashEntry数组 + Reentrantlock Segmen...

  • 11.11

    今天把数组方面的数据结构题目刷了10多道。 明日计划: 学完数组方面的数据结构题目 学习单链表的数据结构题目

网友评论

      本文标题:数据结构-数组

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