数组

定义

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

关键词

  • 线性表:数据线性,每个线性表上的数据最多只有前和后两个方向。
  • 连续的内存空间和相同类型的数据。这个特点使得数组有优点“随机访问”,同时也造成数组删除和插入元素的效率低

优点:数组根据下标随机访问数组元素

计算机会给每个内存单元分配一个地址,计算机通过地址访问内存中的数据。所以当计算机要随机访问内存中某个数组元素时,需要先确定元素存储的内存地址,这里有一个公式

a[i]_address = base_address + i * data_type_size
  • data_type_size表示数组中每个元素的大小

缺点:插入和删除的效率低

为保证内存数据的连续性,当插入和删除元素时需要大规模的数据搬移,

面试题:数组和链表的区别

链表适合插入和删除,时间复杂度是$O(1)$,数组支持随机访问,根据下标随机访问的时间复杂度是$O(1)$

JVM标记清除算法

在标记阶段,会遍历所有GC ROOTS,将所有GC ROOTS可达的对象标记为存货,只有当标记工作完成后,清理工作才会开始。问题:标记和清理效率都不高,会产生不连续的内存空间碎片

posted @ 2019-03-26 19:18  zxhyJack  阅读(186)  评论(0编辑  收藏  举报