1.顺序表(数组)
缺点:
1.头部或中间插入删除数据需要挪动数据,时间复杂度为O(N)
2.空间不够了需要增容,增容有一些消耗。其次增容一般是2倍,
那么就有可能存在一定的空间浪费
优点:
1.相对而言空间利用率更高,不需要额外的空间,占用空间小;
链表需要存指针
2.物理空间是连续的。
a.支持随机访问,可以用下标访问(最大的优势)
b.相比链表结构,缓存命中率比较高,访问更高效
2.双向带头循环链表
缺点:
不支持随机访问,缓存命中相对较低
优点:
支持任意位置O(1)插入删除,不需要增容,不存在空间浪费
链表和顺序表是两种互补的数据结构,相辅相成
3.举例说明缓存利用率
eg:假设分别遍历数组和链表,对数组和链表中的数据*2
cpu取数据进行运算,先看数据在不在缓存
(1) 在(缓存命中),直接运算,再写回内存
(2) 不在(缓存命中),从内存加载数据到缓存(加载一段连续内存数据
),再运算,再写回内存