顺序表和链表对比

mac2026-08-18  2

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

最新回复(0)