算法第一天——数组理论基础

数组

数组是存放连续内存空间上的相同类型数据的集合,
数组的下标都是从0开始,
数组内存空间的地址是连续的。
数组元素不能删除,只能修改。即数组数组一旦分配了内存空间就不能修改空间大小。
但是在java中,java的内存的空间地址不允许用户访问,完全交给虚拟机寻址。所以不知道java中的内存地址是否连续,通过hashcode打印的值也是经过处理的。所以猜测java 中数组是这样排列的。
算法第一天——数组理论基础_第1张图片

优缺点

针对数组而言,最大的优点是存取速度快,其缺点包括插入和删除的效率非常低。最坏情况下时间复杂度是O(N) 。

补充基本数据类型

算法第一天——数组理论基础_第2张图片
byte、short、int、long 符号位+数值
负数用补码表示
float、double
符号位+指数位+尾数位
10.625(10)=1010.101(2)=符号位1 阶码为+3 尾数位010101
float 符号位1位 阶码8位 尾数为23位
double 符号位1位 阶码11位 尾数为52位 阶码也有符号位称为阶符

JAVA 中 Arraylist

ArrayList的底层实现是数组,是一个顺序容器,存放的数据和放进去的顺序相同。但是没有实现同步,有一个容量限制表示数组的实际大小,当容量不足时,会自动增大数组的大小。

你可能感兴趣的:(leetcode,java)