美文网首页
动态数组

动态数组

作者: 水中的蓝天 | 来源:发表于2022-08-28 15:22 被阅读0次

本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。

数据结构简单认识.png

线性表

  • 线性表是具有n个相同类型元素的有限序列(n>=0)
结构图.png
  • a1是首节点(首元素),an是尾节点(尾元素)
  • a1是a2的前驱,a2是a1上午后继

常见的线性表有:

  • 数组
  • 链表
  • 队列
  • 哈希表(散列表)

数组(Array)

  • 数组是一种顺序存储的线性表,所有元素的内存地址是连续

NSArray *array = @[11,22,33];

内存图.png
  • 在很多编程语言中,普通数组都有致命的缺点:无法动态修改容量
  • 实际开发中,我们更希望数组的容量是可以动态改变的

动态数组(Dynamic Array)接口设计

  • int size(); //元素的数量
  • boolean isEmpty(); //是否为空
  • boolean contains(E element); //是否包含某个元素
  • void add(E element); //添加元素到最后面
  • E get(int index); //返回index位置对应的元素
  • E set(int index, E element); //设置index位置的元素
  • void add(int index, E element); //往index位置添加元素
  • E remove(int index); //删除index位置对应的元素
  • int indexOf(E element); //查看元素的位置
  • void clear(); //清除所有元素
image.png

动态数组明显缺点:

可能会造成内存空间的大量浪费,比如:很久都不一定会用到扩容后的空间

数组修改元素时间复杂度:O(1), 这个复杂度和下标无关;
数组查询元素时间复杂度:O(1), 这个复杂度和下标无关;

数组访问特点:

  • 随机访问速度非常快

相关文章

  • 20_总结

    一、动态数组 普通动态数组 环形动态数组 接口设计 int size(){} // 元素的数量 boolean i...

  • C语言动态数组

    一维动态数组 二维动态数组

  • C语言 泛型动态数组

    泛型实现思路:万能指针void *动态数组实现思路:动态进行数组内存的扩容 realloc 泛型动态数组 数组可以...

  • C++ 动态顺序表的实现(更新中)

    动态数组与数组相似,但是动态数组的大小可以在运行时动态修改。动态数组的元素占用连续的内存块,一旦创建,就无法更改其...

  • 笨办法学C 练习34:动态数组

    练习34:动态数组 原文:Exercise 34: Dynamic Array 译者:飞龙 动态数组是自增长的数组...

  • VBA之数组

    数组的声明 一维数组 二维数组 动态数组

  • 数据结构大纲

    1、线性表 1.1、数组 1.1.1、简介 数组是一段连续的内存 1.1.2、动态数组 有动态扩容功能和动态缩容功...

  • 关于ArrayList

    ArrayList简介 ArrayList内部是以动态数组存放数据的,所谓动态数组,不是数组本身可以改变长度,而是...

  • 2018-11-28

    vector容器。 vector类称为向量类,实现了动态数组,用于元素数组动态变化的对象数组。同数组一样,vect...

  • C++ 创建动态二维数组

    有时候数组过大,栈放不下,可以利用动态分配生成动态数组 动态创建数组时一定要记得结束程序时释放内存。

网友评论

      本文标题:动态数组

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