数组知识点--数据结构与算法之美

数组基础

  1. 线性表:数组、链表、队列、栈
    非线性表:树、图
  2. 数组可以实现随机访问,因为内存空间连续,数据类型相同,但是删除的时候,为了保证数组的连续性,就要进行大量的数据搬移工作
  3. 数组地址的计算公式

    a[i]_address = base_address +i*data_type_size

  4. 数组的查找操作时间复杂度并不是O(1)。即便是排好的数组,用二分查找,时间复杂度也是O(logn)。应该这样说,数组支持随机访问,根据下标随机访问的时间复杂度为O(1)
  5. 数组的插入和删除平均时间都是O(n)
  6. java删除数组的时候并不是搬移数据,只是记录数据已经被删除,当数组没有更多的存储空间时,再触发一次真正的删除操作,即JVM标记清除垃圾回收算法。
  7. java中的ArrayList封装了数组的很多操作,并支持动态扩容。一旦超过存储容量,扩容时比较耗内存,因为涉及到内存申请和数据搬移。

猜你喜欢

转载自blog.csdn.net/weixin_40693859/article/details/86763185