zoukankan      html  css  js  c++  java
  • 数组

    定义

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

    关键词

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

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

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

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

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

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

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

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

    JVM标记清除算法

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

  • 相关阅读:
    约瑟夫问题的JAVA实现(借鉴别人的代码+自己分析理解)
    ubuntu 与windows双系统记录
    重装windows7
    浏览器专题之缓存url请求
    js实现函数重载
    用python实现网上书店
    flex与bison应用实例
    前端小游戏之拼图功夫熊猫
    细说javascript的对象
    [LeetCode 1712] Ways to Split Array Into Three Subarrays
  • 原文地址:https://www.cnblogs.com/zxhyJack/p/10602786.html
Copyright © 2011-2022 走看看