1、底层结构上
顺序表底层结构是一段连续的空间(也可以这么说顺序表底层空间是逻辑上和物理上都是连续的)
链表底层结构是动态的创建不连续的空间(链表底层是逻辑上连续,物理上不连续)
2、随机访问
顺序表支持随机访问,访问某个元素效率为o(1)
链表不支持随机访问,访问某个元素的效率为o(n)
3、插入和删除效率
顺序表的插入删除效率低,需要搬移元素,时间复杂度为o(n),并且再插入的时候还有可能需要增容,导致效率更低
链表中在任意位置的插入、头插、头删这几个操作中效率比较高,不需要搬移元素,时间复杂度为o(1)
4、空间利用率
顺序表底层为连续空间,不容易造成内存碎片,空间利用率高,但是如果顺序表涉及增容,并且增容之后剩余空间比较多这个空间利用率就比较低了(特殊情况)
链表底层是动态开辟的,小节点容易造成内存碎片,空间利用率低
5、缓存利用率
因为顺序表的空间一般是连续开辟的,而且一次会开辟存储多个元素的空间,所以在使用顺序表时,可以一次把多个数据写入高速缓存,再写入主存,顺序表的CPU高速缓存效率更高,且CPU流水线也不会总是被打断;而单链表是每需要存储一个数据才开辟一次空间,所以每个数据存储时都要单独的写入高速缓存区,再写入主存,这样就造成了,单链表CPU高速缓存效率低,且CPU流水线会经常被打断。
6、应用场景
顺序表:
需要高效存储,支持随机访问,不关心插入删除效率
链表:
大量插入删除操作,不关心随机访问
顺序表和链表对比
最新推荐文章于 2023-06-07 11:31:44 发布