赞
踩
目录
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) | 20 | 3 |
108=100+(2*4) | 34 | 2 |
104=100+(1*4) | 36 | 1 |
100(*1) | 18 | 0 |
1:数组的删除和插入的时间复杂度是O(N)是需要很多次不能像常数集一样统计出来
a | b | c | d | e |
0 | 1 | 2 | 3 | 4 |
a | b | c | X | d | e |
0 | 1 | 2 | 3 | 4 |
a | b | c | X | d | e |
0 | 1 | 2 | 3 | 4 | 5 |
如上图数组中有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)
以上,所以数组删除和插入比较慢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。