顺序表(数组)和链表的优缺点对比,举例说明缓存利用率

1.顺序表(数组)

缺点:

1.头部或中间插入删除数据需要挪动数据,时间复杂度为O(N)
2.空间不够了需要增容,增容有一些消耗。其次增容一般是2倍,
那么就有可能存在一定的空间浪费

优点:

1.相对而言空间利用率更高,不需要额外的空间,占用空间小;
链表需要存指针
2.物理空间是连续的。
a.支持随机访问,可以用下标访问(最大的优势)
b.相比链表结构,缓存命中率比较高,访问更高效

2.双向带头循环链表

缺点:

不支持随机访问,缓存命中相对较低

优点:

支持任意位置O(1)插入删除,不需要增容,不存在空间浪费

链表和顺序表是两种互补的数据结构,相辅相成

3.举例说明缓存利用率

eg:假设分别遍历数组和链表,对数组和链表中的数据*2

cpu取数据进行运算,先看数据在不在缓存
(1) 在(缓存命中),直接运算,再写回内存
(2) 不在(缓存命中),从内存加载数据到缓存(加载一段连续内存数据),再运算,再写回内存
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50886514/article/details/113822519