1.顺序表

优点:

1、物理空间是连续的,方便使用下标随机访问。

缺点:

1、由于需要物理空间连续,空间不够需要扩容。扩容本身有一定消耗,其次扩容机制还存在一定的空间浪费。

2、头部或者中部的插入、删除需要挪动数据,效率低 O(n).

2.链表

优点:

1、任意位置的插入删除数据的效率高O(1).

2、按需申请和释放空间。

缺点:

1、不支持下标的随机访问。有些算法不适合在链表上进行,比如二分查找、排序等

2、空间利用率不如链表,需要一个结点中除了有数据,还有指向其他结点的指针

3、顺序表其他优点

顺序表还有一个优点:CPU高速缓存命中率高

由于内存的速度太慢,CPU不会直接访问内存,数据会先加载到三级缓存或寄存器(4/8byte的小数据会放到寄存器,大数据加载到缓存)

CPU会看数据是否在缓存,在就叫命中,直接访问

不在就叫不命中,先把数据从内存加载到缓存,再访问

而每次加载基于局部性原理,会把数据连续一段空间都加载到缓存

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐