顺序表和链表的优缺点

一、顺序表的优缺点

    一、顺序表的优点

              1. 支持随机访问。 有些算法是需要结构支持随机访问的,比如二分查找法、优化的快排                等等。

               2. CPU高速缓存命中率更高。

     二、顺序表的缺点

               1. 空间不够时,需要扩容,而扩容又有消耗。

               2. 头部或者中间位置的插入删除,需要挪动,挪动数据也是有消耗的。

               3. 避免频繁扩容,一次一般都是按倍数去扩(2倍),可能存在一定空间浪费 。

二、链表的优缺点

       一、链表的优点

                   1. 按需申请空间,不用了就释放空间,更合理的使用空间。
                   2. 头部中间插入删除数据,不需要挪动数据。
                    3. 不存在空间浪费。

       二、链表的缺点

                    1. 每存一个数据,都需要存一个指针去链接后面数据节点。
                    2.不支持随机访问(用小标直接访问第i个) 。
                    3.cpu高速缓存命中率更低。

  三、CPU高速缓存命中率

              前面这两个都提到了CPU高速缓存命中率,这里简单的说一下,若还是不理解可以去看           具体的解释。举个例子:顺序表 :[1, 2, 3, 4, 5, 6]   链表:1->2->3->4->5->6  访问存储1的数         据的内存位置0x00123440,先看这个地址在不在缓存中,在就直接访问,不在就先加载到缓         存,再访问,不在缓存说明没有命中 ,假设不命中,一次加载20字节到缓存(具体加载多大         取决硬件体系) 内存访问会一次加载这个地址附近成片的一块。顺序表之间地址是连续的,           而表之间的地址相差挺大 所以顺序表的缓存次数会比链表的少很多,也就是CPU高速缓存命         中率高很多,这就是为啥链表的CPU高速缓存命中率更低,而顺序表的更高的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值