数组
1.随机访问
数组Aaary是一种线性表数据结构,用一组连续的内存空间,来存储一组具有相同类型的数据。
因为其连续的内存空间和相同类型的数据,
使得数组可以随机访问( O(1)时间复杂度 ),但是想在数组中删除、插入一个数据,为了保持连续性,就需要做大量的数据搬移工作( 平均情况时间复杂度为O(n) )。
数组使用下面的公式通过下标随机访问数组元素。
a[i]_address = base_address + i * data_type_size
若数组中存储的是int类型数据,则data_type_size = 4字节
图示
数组与链表的区别:
数组根据下标随机访问的确时间复杂度为O(1),但是真正去查找数组元素时却并不是O(1),即使是排好序的数组使用二分查找,时间复杂度也是O(logn)。
2.插入、删除
3.数组访问越界问题
4.容器能否完全替代数组?
5.为什么大多数编程语言中数组从0开始编号,而不是从1开始?
6.扩展