美文网首页
我的对数组的理解

我的对数组的理解

作者: haha_c609 | 来源:发表于2018-08-08 11:14 被阅读0次

      数组是一个很基础的数据结构,几乎所有的编程语言都有数组结构的实现。虽然不尽完全相同,但是本质上都是用来存放数据的一段连续的结构。

    Java中的数组:

      一段连续的内存空间,在初始化时即指定了数组的长度,在初始化完成后的数组长度不可改变;数据可以存储基本类型和包装类型,未赋值的数组元素为存储类型的默认值。

    Java初始化数组时的内存变化:

      Java在初始化一个数组时,在内存中的Heap(堆)和Stack(栈)上各开辟了一处空间,在Heap上的空间用于存放数组本身,在Stack上的空间用于存放数组引用实例,并指向Heap上的数组本身!


    avatar

    Java中的数组的特点:

    删除慢:

      数组删除元素时,被删除元素的之后的元素都需要向前移动,因此速度慢。

    扩展性差:

      数组的长度在初始化时即指定,在初始化后无法更改,因此无法扩展;但是可以new一个长度更大的新数组,然后将旧数组的元素全部拷贝到新数组中,并将引用指向新的数组来实现曲线扩展,但是这种方式消耗极大;JDK中的ArrayList就是采用的这种方式实现的集合扩容机制。

    Java中数组的有序数组与无序数组:

    • 无序数组:指的是数组中的元素没有按照某种特定的顺组的数组,默认按照插入先后进行的排序
    • 有序数组:指的是数组中的元素按照某种特定的顺序进行排序,如根据元素值的大小进行排序的int[]数组

    有序数组与无序数组的一些区别:
    查找(这里指的是按照元素值进行查找而不是按照下标查找):
      有序数组的查找较无序数组的查找更快一些

    扩展:

    算法的复杂度问题:
    O(1)>O(logN)>O(N)>{O(N^2)}

    相关文章

      网友评论

          本文标题:我的对数组的理解

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