数组的时间复杂度

目录

一、数组查询的时间复杂度O(1)

二、数组的删除和插入时间复杂度O(N)


一、数组查询的时间复杂度O(1)

1、数组的查询复杂度为O(1)是常数集,1代表的是一个常量(比如吃个水果要一分钟,两个水果要两分钟,这里的一分钟和两分钟是一样的,指的是一个大概)

2、数组查找公式 a[n]=起始地址+(n*字节数),数组都是按照一个固定的基本类型去查找的,所以查询比较快。

举例集合起始位置为100,则索引为2的元素则位置为108(int类型的集合,int类型字节为4)。

int[] a = {18,36,34,20};
a[n]元素索引
112=100+(3*4)203
108=100+(2*4)342
104=100+(1*4)361
100(*1)180

二、数组的删除和插入时间复杂度O(N)

1:数组的删除和插入的时间复杂度是O(N)是需要很多次不能像常数集一样统计出来

abcde
01234
abcXde
01234
abcXde
012345

如上图数组中有5个元素a,b,c,d,e,索引为0,1,2,3,4。

插入:如果在索引2和索引3之间插入一个元素X,而数组要维护它的连续性会去掉老位置的索引3,把新增数据位置的索引为3,而为了继续维护它的连续性会把老位置3索引改为4,相当于从插入位置的后面的元素都需要挪动一个位置,这种时间复杂度为O(N),其中的N可以理解为数组的长度。

删除:删除元素的操作与插入相似,比如删除新插入的元素X,则X后面的数据整体往前移动一个位置,相对于的索引也会发生变化,它的时间复杂度为O(N)

以上,所以数组删除和插入比较慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值