数组是我学习编程或者是学习计算机接触到的第一个数据结构,几乎在所有的语言里都实现了。
数组可以随机访问,随机访问的时间复杂度为O(1),和链表相比,访问的时候效率很高。
这是由数组的的结构特点(物理结构)决定的,数组在内存中是连续分配的,而且数组里存放的元素数据类型是一样的,每个内存单元大小一样。所以如果取a[m],它的起始地址就是在a+m*size,这是O(1)级别的。
那么数组从0开始,这个0就是偏移量(offset)的意思,就是上面的m。
java里既有数组也有vector,arraylist,后面的是数组的封装,实现了增加删除,不用我们关心如何实现的,但是如果考虑底层开发,设计性能的需求,需要使用基本的数据机构和数据类型。