数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率

简介: 数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率

顺序表和链表

两个结构各有优势,严格来说,他们是相辅相成的。

顺序表

优点

  1. 支持随机访问(用下标访问),需要随机访问结构支持的算法可以很好的适用。
  2. CPU高速缓存命中率较高

缺点

  1. 在头部或中部插入删除数据时,时间效率低。O(N)
  2. 是占用的连续的物理空间,空间不够时需要进行扩容。
  • 扩容有一定程度的空间消耗
  • 为了避免频繁扩容,一般我们都按倍数去扩容,用不完的这个空间就存在了空间浪费

链表(双向带头循环链表)

优点

  1. 任意位置插入删除数据都很方便,时间效率高。O(1)
  2. 可以按需申请空间。(用多少申请多少,且不会造成空间消耗)

缺点

  1. 不支持随机访问(用下标访问)。这意味着:一些排序和二分查找等在这种结构上并不适用。
  2. 链表存储一个值,同时也要存储链接指针,也有一定的消耗(很小)。
  3. CPU高速缓存命中率较低。

简单解释CPU高速缓存命中率

存储体系大类别的分,可以分为带电存储和不带电存储。

主存往上是带电存储,往下是不带电存储。


了解CPU高速缓存命中率需要多加了解的两个存储设备:三级缓存、寄存器


寄存器的速度是非常快的,而主存的速度相对来说很慢,当CPU要进行计算时,对于小的数据:会将数据从主存加载到寄存器中,计算完之后再返回内存;对于大的数据:则是会将数据加载到三级缓存中,寄存器从缓存中拿取数据进行计算,计算完再返回内存。



在访问存储数据1的内存位置 0x00123400时,会先看它是否存在于缓存中。

如果在,就直接访问;如果不在,就先加载到缓存中,再进行访问。

加载时,会加载一块连续的内存,假设一次加载20个字节(具体大小取决于硬件体系)。那顺序表的一块空间就能一次被命中到多个(即加载到多个的数据);而链表的内存空间不一定连续,可能加载的一块连续空间中命中不到链表的下一个结点。


end

目录
相关文章
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
961 1
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
664 153
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
921 1
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
381 0
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
788 30
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
1144 25
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
1213 23
|
存储 监控 算法
员工电脑监控系统中的 C# 链表算法剖析-如何监控员工的电脑
当代企业管理体系中,员工电脑监控已成为一个具有重要研究价值与实践意义的关键议题。随着数字化办公模式的广泛普及,企业亟需确保员工对公司资源的合理利用,维护网络安全环境,并提升整体工作效率。有效的电脑监控手段对于企业实现这些目标具有不可忽视的作用,而这一过程离不开精妙的数据结构与算法作为技术支撑。本文旨在深入探究链表(Linked List)这一经典数据结构在员工电脑监控场景中的具体应用,并通过 C# 编程语言给出详尽的代码实现与解析。
387 5
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
425 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
378 0