顺序表和链表的优缺点

这里说的链表是(带头循环双向链表),下面我们就说一下他们的优缺点

首先顺序表

优点

1.支持随机访问

2.在O(1)的时间复杂度内,访问下标为i的位置。

3.很多算法的都必须用顺序表例如sort

4.缓存命中率高

缺点

1.每次容量满了都需要扩容(扩容很浪费系统资源)

2.容易浪费空间

3.头插头删,或者中间插入删除效率太低

链表

优点

1.想要多少空间就直接申请多少空间

2.任意位置的插入删除效率高

缺点

1.不支持随机访问

2.每个节点内都两个指针,浪费

3.缓存命中率低

顺序表和链表的优缺点_第1张图片

 大家也可以看一下这张图片,上面更完善

这就是他们的优缺点,这里可能不完善,如果大家有什么想要补充的都可以直接提出。

上面提到了缓存命中率

我们可以看一下

顺序表和链表的优缺点_第2张图片

 什么是缓存命中率?缓存就是cpu每一次访问数据都不是直接和内存打交道,因为内存太慢,所以所以每一次都是缓存加载一部分数据,然后供cpu访问,而这里的缓存是每一次都加载一段数据,并不是一个一个加载,由于顺序表内存是连续的,所以缓存命中率高,而链表的内存不是连续的,所以缓冲命中率低

 

 

完毕~~~~

你可能感兴趣的:(c语言,链表,c++,算法,链表)