美文网首页
五:数组:为什么很多编程语言中数组都从0开始编号?

五:数组:为什么很多编程语言中数组都从0开始编号?

作者: _River_ | 来源:发表于2020-12-03 00:16 被阅读0次

    计算内存地址公式:
    a[k]_address = base_address + k * type_size
    因此数组开头: k= 0 时 为初始地址

    否则为: a[k]_address = base_address + (k-1)*type_size (每次计算地址时做减法而导致了性能的损耗)

    线性表特点:
    1:连续的内存空间
    2:存储相同类型的数据

    代表有:数组、链表、队列、栈

    数组:查找的时间复杂度O(logn),根据下标随机访问(直接访问)的时间复杂度O(1)

    由于需要保证内存空间的连续性:因此insert和delete都非常低效。

    数组的长度,固定,会产生数组越界异常 ArrayIndecOutOfBoundsException
    基本数据类型:
    int [] array = new int[10];
    array[10] =1;
    包装类:
    Integer [] array = new Integer[10];
    array[10] =1;

    ArrayList(容器)动态扩容,扩容细节:申请内存空间 数据搬运 扩容成1.5倍,
    因此当大小已知时,尽快可能的申请已知的内存空间。

    数组:当数据操作简单,数据大小固定,当需要极致的性能时使用,
    多维数组 Object[][] array
    ArrayList:简化细节,只能存储包装类(因为自动装箱会损耗性能),
    多维ArrayList<ArrayList<Object>> array

    相关文章

      网友评论

          本文标题:五:数组:为什么很多编程语言中数组都从0开始编号?

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