数组概念:
数组:数组用一组连续的内存空间,来存储一组具有相同类型的数据。
Array: An array is a collection of same data elements stored at contiguous memory locations.
理解概念用自己的话表述出来:
数组是一个有序集合且数组只能保存同一种类型的数据,在内存中的分布是连续的。
问题
- 为什么说数组是有序的? 从数组的概念中理解:at contiguous memory 即在内存中的分布是连续的,自然是有固定顺序的。
- 数组为什么随机访问速度快?
- 为什么数组的添加与删除速度慢?
随机访问数组元素:
为什么说我们访问数组的元素快呢,数组在内存中的分布形式是连续的内存地址,我们访问这个数组的元素通过下标直接访问,内部的实现为 CPU 的跳转指令,我们只需要通过知道数组的首元素地址+ 偏移量就可以直接访问到数组中元素,只需要一步,时间复杂度为 O(1): 如下图所示
添加与删除数组元素
array_delete
添加元素会将当前索引及之后的元素后移,时间复杂度也是O(N)
。如下图所示: