直击信息的本质 - 数组

前言

数组指多个连续的最小存储单元所构成的集合,且每个单元只可被一个数组使用。数组会记录起始最小存储单元的下标(start)与数组长度(len)。(在计算机系统中,可以把内存看做一个超大的数组)

在这里插入图片描述

原理

实际上数组是由,最小存储单元这个概念规定自然产生的一种数据结构,即多个连续的最小存储单元称之为数组。实际上整个存储区域也可以视为是一个数组。

数据基本操作

例:
在这里插入图片描述

如上图,当对数组q增加时,因为后面存储单元已被w占用,无法在链接新的元素,只能在其他空闲位置重新开辟(如图中e就是q重新开辟后的位置)。

性能:
重新开辟存储区域大小为N,所以开销为O(N)。

例:

(图一)
在这里插入图片描述
(图二)
在这里插入图片描述

如上图一数组q删除了存储区域(3,4,5,6,7)虽然不会出现占用的情况,但如果不进行重新分配,会出现q占用的存储区域很大,实际利用的区域非常小,造成大量存储资源浪费。
如上图二数组删除后重新开辟了大小合适的数组,在申请新数组w时,可以充分利用空间。

性能:
需要重新开辟存储区域大小为N,所以开销为O(N)。

在这里插入图片描述
例:
如上图访问q中的第3个元素下标为3+3-1 =6(数组的第1个元素为start,所以需要减1),因为数组的特性它是由均匀且连续的元素构成,且会记录第一个开始的元素下标为start,那么访问这个数组中的第N个元素,可快速计算得到这个元素的下标为start+N-1,所以消耗为O(1)。

改变一个元素时需要先查询,修改的成本为O(1)+O(查) ,所以修改一个元素的开销和查找性能相当,所以消耗为O(1)。

后语

1.数组作为计算机中最基本的数据结构之一,可以看到数组的优势很明显劣势也很明显,即查询消耗非常小,增删都需要重新申请数组开销非常大。

2.数组在增删的时候,需要重新申请数组,其核心原因是因为存储空间并不是无限的。在考虑到存储利用率的情况下做出的妥协。

3.在实际中,数组的申请和删除并不是马上重新申请新的存储地址,是有一套处理逻辑,这里简化了这个过程,不做过多的说明。

4.数组实际上已经是最基础的数据结构了,数据结构从某种意义上来讲,可以理解为数据之间的关系。而物理现实等原因,导致了需要定义最小存储块,那么就自然诞生了数组这种数据结构。

传送门

最小存储单元

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值