数据结构与算法数组Array篇(数组数据结构与算法)

数据结构与算法数组Array篇(数组数据结构与算法)

" 数据结构与算法"不管是在Java还是在任何语言中都是核心基础知识,就像是盖楼的地基一样,它被广泛的应用于架构的最底层,对于这部分知识的掌握程度能够决定读者以后的高度。

出于这个初衷开更本系列文章,希望能对读者有所帮助。

读者的收获

1、了解数组的概念

2、数组的内存结构

3、数组的寻址逻辑

4、数组的特性

5、日常使用中需要注意的问题

码文不易
你的关注是浩说编程持续更新的动力

 

一、数组的概念

数组是用于存储相同数据类型数据的一种线性数据结构,它在内存中是一组连续的内存空间。

数据结构与算法数组Array篇(数组数据结构与算法)

 

二、数组的寻址逻辑

以上面的数组为例,内存空间为数组a分配的连续内存空间为10~27,若想取得a[3]的值,计算机是如何寻址的呢:

首先,获取内存为数组a分配的首地址head_address=10,然后获取目标位置3,最后获取每个元素占用的内存空间data_type_address=4(int类型数据每一位占四个字节),所以a[3]address = head_address+3*data_type_address

于是推导出寻址公式

数据结构与算法数组Array篇(数组数据结构与算法)

 

三、数组的特性

一、高效的随机访问

由于数组在内存中连续分布,所以随机访问元素非常高效,可以直接通过上面讲的寻址公式计算获得。

二、相对低效的“插入”和“删除”

任何事物都具有两面性,同样由于数组在内存中连续分布,所以在对数组的中间元素进行“插入”或“删除”操作时,为了保证内存空间的连续性,需要移动后面所有元素的位置,想象一下若后面的元素量相当庞大,那么这个过程将非常低效耗时。

数据结构与算法数组Array篇(数组数据结构与算法)

删除同理上移

 

四、数组下标越界问题(ArrayIndexOutOfBoundsException)

数组下标越界问题是读者日常开发中需要特别注意的,对于入门阶段的读者应该尤其关注,看下面这段代码:

数据结构与算法数组Array篇(数组数据结构与算法)

由于数组array的最大下标为array[3],于是当i=4的时候,控制台就会抛越界异常,读者需要特别注意。

以上就是数组的全部内容,之所以将数组放在数据结构与算法系列的第一篇,是因为数组是最好理解的数据结构,有一个好的开篇能让读者更有信心进行之后的学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论