数据结构基础-数组

作者: 是一个书生 | 来源:发表于2021-08-07 19:03 被阅读0次

1、数组是一种线性表,使用一组连续的内存空间来存储一组具有相同类型的数据

2、数组中查找修改其中一个元素比较高效,因为根据连续地址计算元素地址位置
a[i]_address = base_address + I*data_type_size

3、数组中插入和删除其中一个元素比较低效:

  插入操作:

  有序数组,数组的长度为n,将一个数据插入到数组的第k个位置,为了把第k个位置腾出来,需                     要把第k之后的元素都顺序的往后挪一位,操作复杂O(n)。
  无序数组,直接把k位置的数据移到数组的最后面,把新元素插入到第k个位置。

  删除操作:

  跟插入数据类似,删除第k个位置的数据,为了内存的连续性,也需要搬移数据。
  在某些情况下,如果我们不要求数据必须是连续的,删除的时候可以假删除,只是把这个元素标记为已删除,当组空间不够用的时候,再触发一次真正的删除,这样就大大减少了删除操作导致的迁移操作。

4、静态数组与动态数组。

  OC中不可变数组NSArray指的是内存地址及内存大小不可变,注意重新赋值时相当于数组指针指向新的数组。
  NSMutableArray一般情况下内存地址不变(插入,删除时通过打印数组地址验证),内存大小可变。
 向NSMutableArray中插入元素时,当数组已开辟的内存不够时进行扩容,扩容过程中连续内存不够时,需要重新分配一块更大的空间,把原来的复制过去再插入新的元素。

相关文章

  • 2020年最新整理的java学习路线

    阶段一:数据结构 一、基础 1、基本的数据结构 [](1)基础概念 [](2)数组 [](3)链表 [](4)栈:...

  • 最新整理的java学习路线

    阶段一:数据结构 一、基础 1、基本的数据结构 [](1)基础概念 [](2)数组 [](3)链表 [](4)栈:...

  • 链表问题

    前言 如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础。 因为像堆,栈,对,图等比较复杂的数组结基本上...

  • java 集合精华一页纸

    从最基础的数据结构 数组|链表|树 开始,基于这些基础数据结构通过各种设计组合成具备特定功能的数据结构,这些结构是...

  • 2019-07-19数据结构

    计算机本来没有算法先有编码,后有数据结构,然后有可算法 基础数据结构 数组 java 内置 顺序存储数组的缺点,...

  • 数据结构「数组」

    开篇第一说的,大家都会先聊数组,这是个很基础的数据类型,也是学其他数据结构的基础。学其他的数据结构也都会往数组里面...

  • 扒光 HashMap

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

  • Android高级开发面试题

    一、Java 基础相关 1.1 数据结构与算法 1.1.1 常用的数据结构有哪些? 1.1.2 数组 (1).如何...

  • 数据结构&算法

    数据结构的简单分类 一维数据结构基础: 数组 array(String),链表 linked list高级:栈(s...

  • 数组

    什么是数组 数组是一种非常基础的数据结构,它的专业定义如下:数组(Array)是一种线性表数据结构。它使用一组连续...

网友评论

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

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