小言_互联网的博客

第一天:重新认识数组

238人阅读  评论(0)

数组介绍

(一)特点

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场