Android框架结构优化;数据结构(数组)

顺序表里面元素的地址是连续的,比如数组或者用数组实现的队列、栈等
链表里面节点的地址不是连续的,是通过指针连起来的.如下图所示:

线性表具体解释可以参考线性表

而与线性表队里的概念就是费线性表,比如二叉树、堆、图等等。之所以叫非线性表是因为,在非线性表中数据之间并不是一对一的前后关系,如下所示:

连续内存空间&相同类型

正是基于这种定义的限制,因此可以只需要计算出数组中某一元素相对于首地址(base_address)的偏移量,就可以很方便的计算出这个元素的地址。
以一个长度为4的int类型的数组 int[] arr = new int[4]; 为例。在初始化这个数组时,计算机会给数组arr分配一块连续的内存空间 1000~1015,其中首地址为base_address = 1000, 如下图所示:

计算机会给每个内存单元分配一个物理地址,然后计算机通过这些物理地址来访问内存中的数据。当计算机需要访问数组中的某个元素是,就可以通过下面的寻址公式,计算出该元素的内存地址:

arr[i]_address = base_address + i * data_type_size

其中i 代表需要访问的元素下标,base_address代表首地址,data_type_size_代表每个元素占用的内存大小,比如数组中存储的是java的int类型,所以data_type_size_也就是4个字节。

#数组的基本操作<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值