数组介绍
(一)特点
1)线性表
2)连续的内存空间And相同类型的数据
(二)特点
1)便于随机访问
- 寻址方式
a[i]_address = base_address + i * data_type_size
当前元素的地址为j基地址+偏移量
- 纠错:
数组适合查找,时间复杂度为O(1)- 二分查找时间复杂度O(lngN),根据下标访问的时间复杂度 O(1)
2)插入和删除操作不方便
- 时间复杂度
最好时间复杂度 | 最坏时间复杂度 | 平均时间复杂度 |
---|---|---|
O(1) | O(N) | O(N) |
-
删除—一种特殊情况
假如我们不追求数组中数据的连续性
先记录下已经删除的数据,每次操作并不是真的搬移数据,只是记录数据已经被删除,当数组中没有更多空间,触发一次真正删除。- JVM标记清除垃圾回收算法
(三)访问越界问题
arr[3]的位置正好是存储变量i的内存地址
int main ()
{
int i = 0 ;
int arr[3] = {0};
for(; i <=3; i++)
{
arr[i] = 0;
cout << "helloworld";
}
}
转载:https://blog.csdn.net/He_r_o/article/details/102018300
查看评论